jvm垃圾收集器总结jdk1.7
内存
● 线程私有:程序计数器,虚拟机栈,本地方法栈
● 线程共享: 方法区,堆
判断存活算法
● 引用计数法:无法解决循环引用问题。
● 可达性分析算法: 从GCRoot作为起始点,向下搜索,经过的路径成为引用链,当一个对象没有任何引用链相连(不可达时),则证明该对象不可用,进行第一次标记,如果第二次还不可用,则在gc时回收。
可作为GcRoot的对象:
● 虚拟机栈中引用的对象。
● 方法区中类静态属性引用的对象
● 方法区中常量引用的对象
● 本地方法栈中JNI引用的对象
Java引用类型:
● 强引用: 最普遍的,new出来的对象
● 软引用: 有用但非必须的对象,在oom时,进行回收
● 弱引用: 非必须的对象,下次gc时回收
● 虚引用:一个对象是否有虚引用完全不会对其生存时间构成影响,虚引用的唯一目的是能在这个对象被收集器时收到一个系统通知。
回收方法区:
方法区回收性价比低,主要回收两部分:废弃常量和无用的类。判断为无用的类条件:
1.该类所有实例已经被回收
2.加载该类的classloader已经被回收
3.该类的java.lang.class对象没有在任何地方引用,无法通过放射访问该类的方法。
垃圾收集算法
- 标记-清除算法:
● 先标记后回收
● 缺点:效率问题,标记和清除效率都不高,空间问题,清除以后会产生大量内存碎片
2.复制算法:
● 将survivor(存活区)分两块,由于大部分对象(98%)都是"朝生夕死"所以将Eden区和正在使用的survivor区复制到另一个survivor区,eden:survivor 8:1左右。并且有老年区担保机制
● 适合于年轻代
3.标记整理算法:
● 标记之后让存活对象往一端移动,清除另一段的无用对象
● 适合于老年代
4.分代收集:
● 新生代采用复制算法,老年代采用标记整理算法
Hotspot算法实现
● GCRoots:在oopmap的协助下,快速完成GCRoots枚举,oopmap只有在某些代码位置生成,在安全点(方法调用返回,可能异常点,循环跳转)中断进行回收。改进为安全区域(无引用关系变化
垃圾收集器
● serial收集器:单线程收集器,stop the world,
● ParNew收集器:Serial多线程版本,能与cms搭配。
● Parallel Scavenge收集器:自适应调节策略,高吞吐量,多线程并行,
● CMS收集器:以获取最短回收停顿时间为目标的收集器。四个步骤:1.初始标记 2.并发标记,3.重新标记,4.标记清除。初始标记和重新标记需要停顿,这段时间较短, 并发标记和并发清除时间长,cms并发执行。
缺点:无法处理浮动垃圾。内存碎片。
● G1收集器:
1.并行与并发 2.分代收集 3.空间整合 4.可预测停顿。
可用于新生代和老年代,内存中它们不再隔离。跟踪合个region里的价值大小维护优先列表,每次根据允许的收集时间,优先回收价值最大的region。
jvm垃圾收集器总结jdk1.7的更多相关文章
- 7种JVM垃圾收集器特点,优劣势、及使用场景
今天继续JVM的垃圾回收器详解,如果说垃圾收集算法是JVM内存回收的方法论,那么垃圾收集器就是内存回收的具体实现. 一.常见的垃圾收集器有3类 1.新生代的收集器包括 Serial PraNew Pa ...
- 第五章 JVM垃圾收集器(1)
说明:垃圾回收算法是理论,垃圾收集器是回收算法的实现,关于回收算法,见<第四章 JVM垃圾回收算法> 1.七种垃圾收集器 Serial(串行GC)-- 复制 ParNew(并行GC)-- ...
- JVM垃圾收集器(1)
此文已由作者赵计刚薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 说明:垃圾回收算法是理论,垃圾收集器是回收算法的实现,关于回收算法,见<第四章 JVM垃圾回收算法& ...
- 5种JVM垃圾收集器特点和8种JVM内存溢出原因
先来看看5种JVM垃圾收集器特点 一.常见垃圾收集器 现在常见的垃圾收集器有如下几种: 新生代收集器: Serial ParNew Parallel Scavenge 老年代收集器: Serial O ...
- 7种 JVM 垃圾收集器特点、优劣势及使用场景(多图)
7种 JVM 垃圾收集器特点.优劣势及使用场景(多图) mp.weixin.qq.com 点击上方"IT牧场",选择"设为星标"技术干货每日送达! 一.常见垃 ...
- JVM调优:HotSpot JVM垃圾收集器
HotSpot JVM垃圾收集器 - Snooper - 博客园https://www.cnblogs.com/snooper/p/8718478.html
- JVM垃圾收集器-Parallel Scavenge收集器
今天我给大家讲讲JVM垃圾收集器-Parallel Scavenge收集器 Parallel Scavenge收集器 Parallel Scavenge收集器也是一个新生代收集器,它也是使用复制算法的 ...
- 【006】【JVM——垃圾收集器总结】
Java虚拟机学习总结文件夹 JVM--垃圾收集器总结 垃圾收集器概览 收集算法是内存回收的方法论.垃圾收集据是内存回收的详细实现.Java虚拟机规范中对垃圾收集器应该怎样实现没有规定.不同的厂 ...
- 第六章 JVM垃圾收集器(2)
上一章记录了几种常见的垃圾收集器,见<第五章 JVM垃圾收集器(1)> 1.G1 说明: 从上图来看,G1与CMS相比,仅在最后的"筛选回收"部分不同(CMS是并发清除 ...
随机推荐
- [hihoCoder] 高斯消元·一 [TPLY]
高斯消元一 题目链接 : http://hihocoder.com/problemset/problem/1195?sid=1269842 很"好aoaoaoaoaoaoa"的高斯 ...
- POI导出Excel的几种情况
第一种:常见导出[已知表头(长度一定),已知表数据(具体一个对象的集合,并已知对象各个属性的类型)]第二种:不常见导出[已知表头(长度不定),已知表数据(没有具体对象,装在String类型的集合中)] ...
- c#多线程同步之lock
一提起lock,想必大家都很熟悉,因为它易用,顾名思义,就是一把锁,常用于多线程的同步,一次只允许一个线程进入.最近遇到一个很诡异的bug. private static readonly objec ...
- 如何为Web应用选择托管主机
PHP应用开发好了?恭喜你!不过,现在还没什么用,因为用户无法使用.你要把应用存储到服务器中,让预期受众能访问.一般来说,存储PHP应用有四种方式:共享服务器.虚拟私有服务器.专用服务器和平台即服务. ...
- SyntaxHighlighter去掉右上角帮助图标的正确方法
先贴出问题图片: 关于这个问题.网上有很多的帖子,说了三种方法,经过测试,发现其中有些方法是有问题的,有的方法虽然能过解决问题,但是却会带来其他的错误.现在说明如下: 网上的原话: syntaxhig ...
- Unity性能优化的N种武器
贴图: l 控制贴图大小,尽量不要超过 1024 x1024: l 尽量使用2的n次幂大小的贴图,否则GfxDriver里会有2份贴图: l 尽量使用压缩格式减小贴图大小: l 若干种贴图合并 ...
- 简单http代理服务器搭建
1. yum install squid2. vi /etc/squid/squid.conf 将http_access deny all 中deny 改为allow,http_port后面的是端口号 ...
- Java基于TCP的Socket编程练习
环境:Notpad ++ 6.0 + JDK 6.0.31 问题:使用套接字编写客户-服务器程序,实现客户-服务器交互计算.客户将三角形3个边的长度发给服务器,服务器把计算出的三角形的面积返回给客户. ...
- Spring OAuth2 GitHub 自定义登录信息
# 原因 最近在做一款管理金钱的网站进行自娱自乐,发现没有安全控制岂不是大家都知道我的工资了(一脸黑线)? 最近公司也在搞 Spring OAuth2,当时我没有时间(其实那时候不想搞)就没做,现在回 ...
- ArrayList源码解析(JDK1.8)
package java.util; import sun.misc.SharedSecrets; import java.util.function.Consumer; import java.ut ...