备注: 1.超大对象是指对象大小大于Eden+S0 2.新生代采用复制算法进行垃圾回收 3.老年代采用标记整理算法进行垃圾回收 ...
分类:
其他好文 时间:
2020-01-11 18:35:13
阅读次数:
86
目录 JVM 线程内存共享区 堆 heap (线程共享) 新生代的划分 Eden/FromSurvivor/To Survivor FromSurvivor To Survivor 新生代Minor GC 回收过程 老年代区域 清理算法:标记清除法 方法区、永久代(线程共享) 运行时常量池 线程内存 ...
分类:
其他好文 时间:
2020-01-09 18:57:51
阅读次数:
102
现在虚拟机一般使用的内存回收策略就是分代收集,就是判断对象的年龄并加以内存分配。但是有时候新生代对象存活率较高,导致有大对象分配时内存不足,虚拟机也会采用担保机制是大对象进入老年代。 ...
分类:
其他好文 时间:
2019-12-20 14:01:49
阅读次数:
285
1、内存模型 1.1、堆 1. 堆是所有线程共享的,主要存放对象实例和数组。 2. 新生代和老年代的比例是1:2。 3. 新生代中三个区域的比例是 8 : 1 : 1。 1.1.1、新生代 对象分配在eden区中,当eden区满时会触发minor gc,将eden区中存活的对象,复制到survivo ...
分类:
编程语言 时间:
2019-12-18 23:36:48
阅读次数:
95
垃圾收集分两大块内容: 新生代垃圾收集、老年代垃圾收集 两者各有特性,在新生代内存中,大部分对象朝生夕死,GC的垃圾回收算法大多为复制算法 老年代内存中对象的存活率较高,古选择标记-整理、标记-清除算法较多 新生代收集器有三款: Serial收集器、ParNew收集器、Parallel Scaven ...
分类:
其他好文 时间:
2019-12-18 14:47:21
阅读次数:
88
JVM调优主要原理总结: a通过内存设置,减少GC触发。如:存新生代的比例和老年代的比例最好为1:2或者1:3。减少GC对老年代的回收 b设置并行并发垃圾器,减少GC触发时延迟卡顿。 c通过命令行查看优化前后参数,对比分析出优化的具体数据。 d.其他参数常见问题 1)内存溢出解:设置堆内存大小-Xm ...
分类:
其他好文 时间:
2019-12-09 01:08:20
阅读次数:
74
1. 堆内存结构 Java堆从GC的角度可以细分为:新生代(Eden区、From Survivor区和To Survivor区)和老年代。 1.1 新生代 1.2 老年代 2.垃圾回收机制算法 2.1 垃圾回收机制 2.2 对象回收判断 2.2.1 引用计数算法 引用计数法就是如果一个对象没有被任何 ...
分类:
其他好文 时间:
2019-12-01 22:40:00
阅读次数:
131
过程 初始标记 从roots(例如:thread stack引用的对象,static对象),新生代对象,标记直接引用的老年代对象。 并发标记 利用初始标记阶段标记的对象,递归标记整个老年代。 该阶段与用户线程并行执行,产生变化的对象(新建,晋升,引用变化(不引用)等)所在的Card标记为Dirty。 ...
分类:
其他好文 时间:
2019-12-01 18:33:53
阅读次数:
113
引用计数法 :Java虚拟机并未采用这种算法 缺点:1.对象的循环引用 2.伴随加法和减法操作,有一定的性能开销 -可达对象 -不可达对象 : 通过根对象进行引用搜索 复制算法:通常存活对象很少,这个算法效率高,也没有空间碎片,但是内存折半 标记清除法:会产生空间碎片 标记压缩法:老年代存活对象多, ...
分类:
编程语言 时间:
2019-11-29 10:41:24
阅读次数:
94
目录: 如何判断垃圾是否回收? 引用计数法 可达性分析算法 四种引用 引用队列 垃圾回收算法 标记清除算法 复制算法 标记整理算法 分代垃圾回收 新生代 老年代 Minor GC 和 Full GC的区别 总结 垃圾回收器 原理 串行回收器 吞吐量优先 获取最短停顿时间优先(CMS) G1 垃圾回收 ...
分类:
其他好文 时间:
2019-11-21 10:18:50
阅读次数:
133