JVM堆详解
1、在JVM堆空间可以分为三个大区:新生代、老年代、永久代。
2、新生代可以划分为三个区,Eden区,两个幸存区。
在JVM运行时,可以通过配置一下参数改变整改JVM堆 的配置
1.JVM运行时堆的大小 -Xms堆的最小值 -Xmx堆空间的最大值2.新生代堆空间大小调整 -XX:NewSize新生代的最小值 -XX:MaxNewSize新生代的最大值 -XX:NewRatio设置新生代与老年代在堆空间的大小 -XX:SurvivorRatio新生代中Eden所占区域的大小3.永久代大小调整 -XX:MaxPermSize4.其他 -XX:MaxTenuringThreshold,设置将新生代对象转到老年代时需要经过多少次垃圾回收,但是仍然没有被回收
JVM的垃圾收集机制(复制算法也叫copy算法)
将内存平均分成A、B两块,算法过程:
1. 新生对象被分配到A块中未使用的内存当中。当A块的内存用完了, 把A块的存活对象对象复制到B块。
2. 清理A块所有对象。
3. 新生对象被分配的B块中未使用的内存当中。当B块的内存用完了, 把B块的存活对象对象复制到A块。
4. 清理B块所有对象。
5. goto 1。
优点:简单高效。缺点:内存代价高,有效内存为占用内存的一半。