Java Garbage Collection
2013-08-30 00:00
555 查看
通常意义上的Java Heap:
通常上Java Heap 分为两部分:
Young Generation ---- 新生代
Old Generation ---- 老生代
新生代,又会分为以下几个子区域:
The Young generation region is further divided into sub-regions, namely
Eden
Survivor Space 1
Survivor Space 2
当一个对象被创建的时候,它会被放到Eden,也能够被在此被销毁。
如果Eden空间已被占满,这个新创建的对象就会被放到Survivor Space 1,
同样地,Survivor Space 1被用完,就会放到Survivor Space 2。
如果一个对象在Survivor Space 2中没被销毁/回收, 那么它就会退到老生代区域
The objects which are not destroyed in Survivor Space 2 are retired to the Old Generation region of the heap。
垃圾回收是java语言提供的最大的好处之一,如果合理的使用,会让我们的程序良好运行,如果使用的不当,将会对运行的应用影响很严重。一些对垃圾回收的影响因素必须要牢记。
(1)JVM Pause – The time taken by the JVM to do the GC during which the JVM pauses
(2)Throughput – The time interval between successive GC
多种收集器
Hotspot 虚礼机实际上有一些不同种类的垃圾收集器。每一个都有不同的性能表现和适用于不同的任务。以下是几个是主要的垃圾收集器:
(1)Parallel Scavenge (PS):
这是一个默认的收集器,当它执行时会暂停应用程序的一切,但是它是并行执行的(例如,使用多线程来执行),它还有一个特殊的模式,是可以自动调整各种堆大小和是否执行GC。
(2)Concurrent Mark Sweep (CMS):
这个收集器执行有很多阶段,有些阶段会暂停一切,但是跟程序一样在某些阶段也是并行执行的。
(3)Incremental Concurrent Mark Sweep (iCMS):
一个CMS的变种,为了更少的暂停程序,它有时候会达到这个目的。
(4)Garbage First (G1):
新一代垃圾收集器,从1.6版本已经被部分引入了,而且使用也逐渐增多。
它的目标是要做到尽量减少GC所导致的应用暂停的时间,让应用达到准实时的效果,同时保持JVM堆空间的利用率,将作为CMS的替代者在JDK 7中闪亮登场,其最大的特色在于允许指定在某个时间段内GC所导致的应用暂停的时间最大为多少,例如在100秒内最多允许GC导致的应用暂停时间为1秒,这个特性对于准实时响应的系统而言非常的吸引人,这样就再也不用担心系统突然会暂停个两三秒了。
未完代续。。。
通常上Java Heap 分为两部分:
Young Generation ---- 新生代
Old Generation ---- 老生代
新生代,又会分为以下几个子区域:
The Young generation region is further divided into sub-regions, namely
Eden
Survivor Space 1
Survivor Space 2
当一个对象被创建的时候,它会被放到Eden,也能够被在此被销毁。
如果Eden空间已被占满,这个新创建的对象就会被放到Survivor Space 1,
同样地,Survivor Space 1被用完,就会放到Survivor Space 2。
如果一个对象在Survivor Space 2中没被销毁/回收, 那么它就会退到老生代区域
The objects which are not destroyed in Survivor Space 2 are retired to the Old Generation region of the heap。
垃圾回收是java语言提供的最大的好处之一,如果合理的使用,会让我们的程序良好运行,如果使用的不当,将会对运行的应用影响很严重。一些对垃圾回收的影响因素必须要牢记。
(1)JVM Pause – The time taken by the JVM to do the GC during which the JVM pauses
(2)Throughput – The time interval between successive GC
多种收集器
Hotspot 虚礼机实际上有一些不同种类的垃圾收集器。每一个都有不同的性能表现和适用于不同的任务。以下是几个是主要的垃圾收集器:
(1)Parallel Scavenge (PS):
这是一个默认的收集器,当它执行时会暂停应用程序的一切,但是它是并行执行的(例如,使用多线程来执行),它还有一个特殊的模式,是可以自动调整各种堆大小和是否执行GC。
(2)Concurrent Mark Sweep (CMS):
这个收集器执行有很多阶段,有些阶段会暂停一切,但是跟程序一样在某些阶段也是并行执行的。
(3)Incremental Concurrent Mark Sweep (iCMS):
一个CMS的变种,为了更少的暂停程序,它有时候会达到这个目的。
(4)Garbage First (G1):
新一代垃圾收集器,从1.6版本已经被部分引入了,而且使用也逐渐增多。
它的目标是要做到尽量减少GC所导致的应用暂停的时间,让应用达到准实时的效果,同时保持JVM堆空间的利用率,将作为CMS的替代者在JDK 7中闪亮登场,其最大的特色在于允许指定在某个时间段内GC所导致的应用暂停的时间最大为多少,例如在100秒内最多允许GC导致的应用暂停时间为1秒,这个特性对于准实时响应的系统而言非常的吸引人,这样就再也不用担心系统突然会暂停个两三秒了。
未完代续。。。
相关文章推荐
- [Understanding Java Garbage Collection]理解Java垃圾收集(一)
- Understanding Java Garbage Collection
- Notes: Garbage Collection in Java(Java的自动垃圾回收机制)
- Java (JVM) Memory Model and Garbage Collection Monitoring Tuning
- java垃圾回收机制——经典论文阅读uniprocessor garbage collection techniques
- How to Monitor Java Garbage Collection
- How to Tune Java Garbage Collection
- Java Garbage Collection (GC) Tuning
- [翻译]Java Garbage Collection Basics Java 垃圾回收基础 之7 总结
- Java Garbage Collection/垃圾收集 策略查看
- Part 1 Understanding Java Garbage Collection
- How to Monitor Java Garbage Collection
- [翻译]Java Garbage Collection Basics Java 垃圾回收基础 之2 Java 技术与JVM
- How to Tune Java Garbage Collection
- .net 垃圾回收学习 The Truth About Garbage Collection [Java][翻译]
- Part 2 How to Monitor Java Garbage Collection
- Java相关博客推荐(不定期更新---2013年8月13号更新 Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning
- Java Memory Architecture (Model), Garbage Collection and Memory Leaks
- How to Monitor Java Garbage Collection
- How to Monitor Java Garbage Collection