jvm的垃圾回收

首先类加载的过程:加载验证准备解析初始化

jvm的垃圾回收

 

 类加载器:

jvm的垃圾回收

 

 jvm内存模型图:

空着,等以后补上

jvm垃圾收集器

目前只知道,parnew,cms,g1

parnew新生代垃圾回收器,复制算法

cms复制整理算法

 

相关概念:年轻代(eden,s0,s1),老年代,永久代

minorGC年轻代 ,fullGC 全部gc,作用在老年代

 

年轻代的gc停顿时间短,老年代停顿时间长

优化思路尽量让短时间存活的对象保存在年轻代,如果是大对象直接进入老年代,避免频繁移动。

避免出现动态年龄规划,进入老年代

避免出现s区内存大小达不到eden区存活对象的大小导致对象直接进入老年代在JVM内存分配中,有几个参数是比较核心的,如下所示。

-Xms:Java堆内存的大小
-Xmx:Java堆内存的最大大小
-Xmn:Java堆内存中的新生代大小,扣除新生代剩下的就是老年代的内存大小了
-XX:PermSize:永久代大小
-XX:MaxPermSize:永久代最大大小
-Xss:每个线程的栈内存大小

模拟参数: -Xms512M -Xmx512M -Xmn256M -Xss1M -XX:PermSize=128M -XX:MaxPermSize=128M

 

parnew垃圾收集器特点:

适用于程序内存小,平均对象存活时间短,能和cms配合使用,适用于新生代。

复制算法,将内存分为两块s0,s1,当eden区满了,就把存活对象复制移动到s0或s1区保证每次有一个区是空的,清除eden区,没有垃圾碎片。stw时间短。

 

 

 

 jvm的垃圾回收

 

jvm的垃圾回收

上一篇:redis string数据类型应用场景


下一篇:C#抽象工厂简单实现类