原文 Java 堆内存被划分为新生代和老年代两部分,因此 JVM 通常采用分代回收算法。新生代主要使用复制和标记-清除垃圾回收算法 ,老年代主要使用标记-整理垃圾回收算法。JVM 中针对新生代和年老代分别提供了多种不同的垃圾收集器。 根据线程特点,可以将收集器分为三类: 串行收集器:Serial 收 ...
分类:
其他好文 时间:
2020-05-15 10:05:25
阅读次数:
70
1.智能指针的作用 C++程序设计中需要频繁地动态分配堆内存,堆内存的申请和释放都由程序员管理。程序员管理堆内存提高了程序的效率,但是整体来说堆内存的管理非常麻烦,且容易造成动态分配的堆内存没有正确释放或无法释放,导致资源浪费,程序运行速度变慢等问题。为了解决这些问题C++11提出了智能指针的概念, ...
分类:
其他好文 时间:
2020-05-13 12:07:12
阅读次数:
68
在Go中使用接口(interface{})好像有性能问题,来看一个例子:跑了三个benchmark,一个是接口调用,一个是直接使用,后面又加了一个接口断言后调用 lib_test.go package main import "testing" type D interface { Append(D ...
分类:
其他好文 时间:
2020-05-12 11:28:10
阅读次数:
72
JVM内存结构主要有三大块:堆内存、方法区和栈。堆内存是JVM中最大的一块由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间、From Survivor空间、To Survivor空间,默认情况下年轻代按照8:1:1的比例来分配; 方法区存储类信息、常量、静态变量等数据,是线程共享的区域 ...
分类:
其他好文 时间:
2020-05-10 10:41:45
阅读次数:
49
1、栈(Stack):存放的都是方法中的局部变量。方法的运行一定要在栈当中。 局部变量:方法的参数,或者是方法{}内部的变量 作用域:一旦超出作用域,立刻从栈内存当中消失。 2、堆(Heap):凡事new出来的东西,都在堆当中。 堆内存里面的东西都有一个地址值:16进制 堆内存里面的数据,都有默认值 ...
分类:
编程语言 时间:
2020-05-08 20:13:48
阅读次数:
107
角色划分 在Elasticsearch中,有很多角色,常用的角色有如下: Master Node:主节点 Master eligible nodes:合格节点 Data Node:数据节点 Coordinating Node:协调节点 Ingest Node:ingest节点 machine lea ...
分类:
其他好文 时间:
2020-05-08 14:44:56
阅读次数:
126
JVM内存模型 首先我们来了解一下JVM的内存模型的怎么样的: 1.堆:存放对象实例,几乎所有的对象实例都在这里分配内存 堆得内存由-Xms指定,默认是物理内存的1/64;最大的内存由-Xmx指定,默认是物理内存的1/4。 默认空余的堆内存小于40%时,就会增大,直到-Xmx设置的内存。具体的比例可 ...
分类:
编程语言 时间:
2020-05-06 13:59:30
阅读次数:
89
反射概述 反射概述: 反射(Reflection) 是被视为 动态语言 的关键,反射机制允许程序在执行期间借助于Reflection API 取得任何内部类的信息,并能直接操作任意对象的内部属性及方法。 加载完类之后,在堆内存的方法区中就产生了一个Class 类的对象(一个类只有一个Class 对象 ...
分类:
编程语言 时间:
2020-05-05 19:41:24
阅读次数:
74
==的作用: 比较两个对象,当这两个比较对象是基本数据类型时,若两个比较对象值相等/不相等,就返回true/false。当这两个比较对象是引用类型时,就比较两个对象的堆内存地址,若相等/不相等,就返回true/false。 实例代码: public class Temp { public stati ...
分类:
其他好文 时间:
2020-05-01 23:58:04
阅读次数:
99
JAVA 把内存分为两种,一种叫做栈内存,一种叫做堆内存 栈: 在函数定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块中定义一个变量时,Java就在栈中为这个变量分配内存空间,当其超过变量的作用域后,Java会自动释放掉为该变量分配的内存空间。 堆: 堆内存用于存放有 ...
分类:
编程语言 时间:
2020-05-01 20:50:59
阅读次数:
68