四.GC —三分钟认识JAVA回收机制(Java Garbage Collection)
来源:互联网 发布:天威网络不稳定 编辑:程序博客网 时间:2024/05/29 04:52
这里以jdk1.8做讲解。Jdk1.8的分代去掉了永久代,只分为新生代(有的也译为年轻代)和年老代。
名词解释:
系统吞吐量:用于处理应用程序处理事务的线程数与用于GC的线程数的比。
pause time:进行GC时,暂停处理应用程序事务线程的时间。
JVM运行内存别分为新生代和年老代。新生代包含一个Eden区和两个Survivor区。如图:
个人理解的GC过程:
新生代发生Minor GC,Minor GC在Eden区通过标记—清除算法(上节讲的GC算法),得到存活的对象。如果存活的对象大小小于Survivor区,则将存活对象复制到一个空闲的Survivor区,且清空另一个Survivor区(两个Survivor区永远有一个是空闲的);反之,则会将这些存活对象直接复制到年老代。另外新生代的每个对象都有个复制次数值,当一个存活对象到达一定阈值后,也会将其从新生代复制到年老代。
下面我们具体讲解下GC Collectors。进行GC时都会产生暂停应用程序的线程(对内存中的对象进行标记),产生暂停时间(pause time),进行垃圾回收。
The Serial Collector(串行GC):其命令为-XX:+UseSerialGC.。只使用一个线程进行GC,适用于单线程的服务器,或者小数据集(100M)的小应用程序。GC过程如图:
The Parallel Collector(并行GC):其命令为-XX:+UseParallelGC。默认使用的回收机制,它会根据参数,字段调整内存大小。它主要目标是为了提高系统吞吐量(用于处理应用程序处理事务的线程数与用于GC的线程数的比。),它与串行GC相似,主要区别就是它会用多个线程进行GC,缩短了the pause time. 虽然它常被认为是保障系统吞吐量的垃圾回收机制,不过它也可以使用-XX:MaxGCPauseMillis=n参数来限制the pause time。GC过程如图:
不过The Parallel Collector(并行GC)一般设置-XX:MaxGCPauseMillis参数,因为系统如果对the pause time有要求,可以使用The Concurrent Mark Sweep (CMS) collector .
The Concurrent Mark Sweep collector(CMS GC):其命令为-XX:+UseConcMarkSweepGC。它主要目标是为了缩短the pause time.它分为两个阶段mark – Sweep。所以它有两个暂停时间,但时间都很短。GC过程如图:
Garbage-First Garbage Collector(G1 GC):其命令为-XX:+UseG1GC。这个回收机制用于多核,且大内存服务器。它是为满足the pause time ,同时也满足系统吞吐量而设计。它可以同时进行新生代和年老代的垃圾回收,它也对大对象的内存分配和回收做了特殊处理。
经验:
- 设置-Xmx,限制最大内存,以防服务器系统崩溃。
- 设置好最大内存后,调整参数,使年老代的使用率在70%-90%。
另外,满足以下条件时,不建议花费精力去调整GC:
1.一次Minor GC耗时在50ms内。
2.Minor GC的周期在10s以上。
3.一次Full GC耗时在1s内。
3.Full GC的周期在10分钟以上。
- 四.GC —三分钟认识JAVA回收机制(Java Garbage Collection)
- Java垃圾回收(Garbage Collection, GC)机制
- Java垃圾回收GC(Garbage Collection)
- Garbage collection--垃圾回收机制(java)
- Java学习2:Java垃圾回收机制Garbage Collection(GC)
- Java的JVM GC(Garbage Collection)垃圾回收原理机制及算法
- Java的JVM GC(Garbage Collection)垃圾回收原理机制及算法
- Java的JVM GC(Garbage Collection)垃圾回收原理机制及算法
- Java的JVM GC(Garbage Collection)垃圾回收原理机制及算法 .
- java gc(garbage collection)
- Java的垃圾回收(Garbage Collection)机制
- Java的垃圾回收(Garbage Collection)机制
- Java的垃圾回收(Garbage Collection)机制
- Java的垃圾回收(Garbage Collection)机制
- Java的垃圾回收(Garbage Collection)机制
- Java的垃圾回收(Garbage Collection)机制
- Java的垃圾回收(Garbage Collection)机制
- Java的垃圾回收(Garbage Collection)机制
- 十大Intellij IDEA快捷键
- 深入浅出 消息队列 ActiveMQ
- Apache
- 算法学习笔记 -- 8. two-sum review
- Tomcat调优面试题(二)
- 四.GC —三分钟认识JAVA回收机制(Java Garbage Collection)
- Linux-USB驱动(6)-USB下载线驱动设计
- (Hdu Acm Step 2.1.3)Largest prime factor
- 常用正则
- 返回结果的HTTP状态码
- 表结构的关系
- Java Socket编程
- Java 构建发送邮件的小应用
- 字符串非空子串(腾讯笔试题)