- 浏览: 677628 次
- 性别:
- 来自: 北京
最新评论
-
sparksun007:
licoolxue 写道选择封装元素那个快捷键太帅了,谢了不就 ...
我的Eclipse快捷键 -
sparksun007:
skying007 写道CTL+SHIFT+R查找资源,博主为 ...
我的Eclipse快捷键 -
sparksun007:
licoolxue 写道选择封装元素那个快捷键太帅了,谢了具体 ...
我的Eclipse快捷键 -
sparksun007:
lseeo 写道第五张图,复制好的在To里,为啥第六章图就全部 ...
JVM调优总结(六)-分代垃圾回收详述2 -
sparksun007:
284885166 写道xj20305 写道请问第2个图到第三 ...
JVM调优总结(六)-分代垃圾回收详述2
可以从不同的的角度去划分垃圾回收算法:
按照基本回收策略分
引用计数(Reference Counting):
比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。
标记-清除(Mark-Sweep):
此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。此算法需要暂停整个应用,同时,会产生内存碎片。
复制(Copying):
此算法把内存空间划为两个相等的区域,每次只使用其中一个区域。垃圾回收时,遍历当前使用区域,把正在使用中的对象复制到另外一个区域中。次算法每次只处理正在使用中的对象,因此复制成本比较小,同时复制过去以后还能进行相应的内存整理,不会出现“碎片”问题。当然,此算法的缺点也是很明显的,就是需要两倍内存空间。
标记-整理(Mark-Compact):
此算法结合了“标记-清除”和“复制”两个算法的优点。也是分两阶段,第一阶段从根节点开始标记所有被引用对象,第二阶段遍历整个堆,把清除未标记对象并且把存活对象“压缩”到堆的其中一块,按顺序排放。此算法避免了“标记-清除”的碎片问题,同时也避免了“复制”算法的空间问题。
按分区对待的方式分
增量收集(Incremental Collecting):实时垃圾回收算法,即:在应用进行的同时进行垃圾回收。不知道什么原因JDK5.0中的收集器没有使用这种算法的。
分代收集(Generational Collecting):基于对对象生命周期分析后得出的垃圾回收算法。把对象分为年青代、年老代、持久代,对不同生命周期的对象使用不同的算法(上述方式中的一个)进行回收。现在的垃圾回收器(从J2SE1.2开始)都是使用此算法的。
按系统线程分
串行收集:串行收集使用单线程处理所有垃圾回收工作,因为无需多线程交互,实现容易,而且效率比较高。但是,其局限性也比较明显,即无法使用多处理器的优势,所以此收集适合单处理器机器。当然,此收集器也可以用在小数据量(100M左右)情况下的多处理器机器上。
并行收集:并行收集使用多线程处理垃圾回收工作,因而速度快,效率高。而且理论上CPU数目越多,越能体现出并行收集器的优势。
并发收集:相对于串行收集和并行收集而言,前面两个在进行垃圾回收工作时,需要暂停整个运行环境,而只有垃圾回收程序在运行,因此,系统在垃圾回收时会有明显的暂停,而且暂停时间会因为堆越大而越长。
评论
原来在后面一篇讲到了,谢谢分享,受益匪浅啊!!!
年轻代,年老代,持久代一般各采用什么回收策略?
1.垃圾收集器是不是只回收Heap?
2.Heap在逻辑上按代划分是如何的?我本来认为是只包含 tenured generation 和 young generation的,而 permanent generation 则属于非Heap , 但看到http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html#1.1.Sizing%20the%20Generations|outline
里的
3.JVM规范里将其内存模型称为Runtime Data Area ,其中包含:pc register,method area,java heap,java stack,native stack,这些与tenured generation , young generation 和 permanent generation如何对应?
java中的所有对象都在堆上分配内存,因此垃圾回收只针对堆。
年轻态,年老态都是针对java几次垃圾回收后对象是否被引用的状态,对象本身还是在堆上的。
至于永久态,保存的是类型信息,实际是方法区,方法区也有可能是在堆上分配的空间。
对于jvm垃圾回收机制采用的方法很多,博主只是做概要的介绍,大家可以着重了解ibm和sun所采用的两种回收机制,google就可以找到了。
忘了,如果方法区不在堆上,那GC还得负责这部分垃圾的回收
1.垃圾收集器是不是只回收Heap?
2.Heap在逻辑上按代划分是如何的?我本来认为是只包含 tenured generation 和 young generation的,而 permanent generation 则属于非Heap , 但看到http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html#1.1.Sizing%20the%20Generations|outline
里的
3.JVM规范里将其内存模型称为Runtime Data Area ,其中包含:pc register,method area,java heap,java stack,native stack,这些与tenured generation , young generation 和 permanent generation如何对应?
java中的所有对象都在堆上分配内存,因此垃圾回收只针对堆。
年轻态,年老态都是针对java几次垃圾回收后对象是否被引用的状态,对象本身还是在堆上的。
至于永久态,保存的是类型信息,实际是方法区,方法区也有可能是在堆上分配的空间。
对于jvm垃圾回收机制采用的方法很多,博主只是做概要的介绍,大家可以着重了解ibm和sun所采用的两种回收机制,google就可以找到了。
http://www.ibm.com/developerworks/ibm/library/i-garbage1/
问的好细啊,有些地方可能不一定说的对,你看看吧。
1、2、3应该是同一个问题:)
tenured generation和young generation存的都是对象,这个没什么说的。permanent generation中存的是类描述信息,对应method area。垃圾回收时,会回收tenured generation、young generation、permanent generation三个区。jvm spec给的只是规范,实现上可能根据虚拟机不同实现也不同。
另外,需要特别对“Heap”说明一下,jvm spec中的Heap可能与我们平时看到的虚拟机的heap所有不同,前者对应tenured generation、young generation;而后者,我们往往把permanent generation也算在内了。因此,可能造成了理解上的不同。个人觉得两者理解都不错。
至于pc register、java stack、native stack,看名字就知道,都是运行相关东西,跟“堆”没什么关系。
呵呵,其实还是比较清楚的。
灰色:垃圾。
绿色:存活区。
蓝色:存活区,并且是占用比较大的,比如大对象一类。因此,图上横跨了两块内存区。
橙色:待使用的内存块。在复制算法下,内存区被划分为两块同等大小的区域,交换着使用。
如果再详细分析下就好了
同感
1.垃圾收集器是不是只回收Heap?
2.Heap在逻辑上按代划分是如何的?我本来认为是只包含 tenured generation 和 young generation的,而 permanent generation 则属于非Heap , 但看到http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html#1.1.Sizing%20the%20Generations|outline
里的
3.JVM规范里将其内存模型称为Runtime Data Area ,其中包含:pc register,method area,java heap,java stack,native stack,这些与tenured generation , young generation 和 permanent generation如何对应?
如果再详细分析下就好了
发表评论
-
说说IO(九)- 伟大的Cache
2011-06-06 21:21 0伟大的Cache Cache的身影在整个计算机体系中无 ... -
说说IO(八)- 三分天下
2011-06-06 21:18 4789DAS、SAN和NAS 为了满足人们不 ... -
说说IO(七)- RAID
2011-03-01 21:33 5447Raid很基础,但是在存储系统中占据非常重要的 ... -
说说IO(六)- Driver & IO Channel
2011-03-01 21:32 4655这部分值得一说的是多路径问题。IO部分的高可用性在整 ... -
说说IO(五)- 逻辑卷管理
2011-02-20 21:09 5607LVM(逻辑卷管理),位于操作系统和硬盘之间,LVM ... -
说说IO(六)- Driver & IO Channel
2011-02-20 21:06 0这部分值得一说的是多路径问题。IO部分的高可用性在整个 ... -
说说IO(七)- RAID
2011-02-20 20:53 0Raid很基础,但是在存储系统中占据非常重要的地位,所有 ... -
说说IO(五)- 逻辑卷管理
2011-02-20 19:49 0LVM(逻辑卷管理),位 ... -
说说IO(四)- 文件系统
2011-01-09 21:33 7701文件系统各有不同,其最主要的目标就是解决磁 ... -
说说IO(三)- IO性能的重要指标
2010-12-26 12:45 19414最重要的三个指标 IOPS IOPS,即每秒钟 ... -
说说IO(二)- IO模型
2010-12-20 22:52 15048这部分的东西在网络编程经常能看到,不过在所有IO处理中都 ... -
说说IO(一)- IO的分层
2010-12-20 22:06 12991IO性能对于一个系统的影响是至关重要的。一个系统经过多项 ... -
淘宝iDataForum归来
2010-12-12 21:42 4068今天参加了淘宝的iDa ... -
一次诡异的调优
2010-10-24 14:06 3535最近碰到的一个Java应用,费了半天劲还是没定位到是哪儿的问。 ... -
JVM调优总结(十二)-参考资料
2009-12-28 21:07 12061能整理出上面一些东西,也是因为站在巨人的肩上。下面是一 ... -
JVM调优总结(十一)-反思
2009-12-28 21:06 17918垃圾回收的悖论 所谓“成也萧何败萧何”。Java的垃 ... -
JVM调优总结(十)-调优方法
2009-12-20 21:03 167671JVM调优工具 Jconsole,jPr ... -
JVM调优总结(九)-新一代的垃圾回收算法
2009-12-14 22:11 23650垃圾回收的瓶颈 传统分代垃圾回收方式,已经在一 ... -
JVM调优总结(八)-典型配置举例2
2009-12-09 20:15 19452常见配置汇总 堆 ... -
JVM调优总结(七)-典型配置举例1
2009-12-01 22:11 29511以下配置主要针对分代垃圾回收算法而言。 堆大小设 ...
相关推荐
1.4 JVM调优总结(三)-基本垃圾回收算法 9 1.5 JVM调优总结(四)-垃圾回收面临的问题 12 1.6 JVM调优总结(五)-分代垃圾回收详述1 14 1.7 JVM调优总结(六)-分代垃圾回收详述 1.8 JVM调优总结(七)-典型配置...
四大垃圾回收算法:复制算法、标记-清除算法、标记-整理算法、分代收集算法 七大垃圾回收器:Serial、Serial Old、ParNew、CMS、Parallel、Parallel Old、G1 JVM调优:命令行指令,设置堆内存大小的参数
JVM调优总结(三)基本垃圾回收算法.pdf
1.3 JVM调优总结(三)-基本垃圾回收算法 1.4 JVM调优总结(四)-垃圾回收面临的问题 1.5 JVM调优总结(五)-分代垃圾回收详述1 1.6 JVM调优总结(六)-分代垃圾回收详述2 1.7 JVM调优总结(七)-典型配置举例1 1.8 ...
第四节:垃圾回收算法 1.1标记清除算法 1.2复制算法 1.3 标记整理(标记压缩)算法 第五节:垃圾回收器 1.1Serial/Serial Old收集器 1.2 ParNew收集器 1.3Parallel Scavenge收集器 1.4Parallel Old收集器 1.5CMS...
一.java内存结构 2 二 垃圾收集算法: 3 三 JVM参数 4 四 JVM的垃圾回收集器 7 五 常用参数设置 7
很好的学习资料,很详细的讲述了JVM性能调优,JVM内存模型,垃圾回收原理算法等等,很适合JAVA程序员阅读。
JVM调优的一些常用设置. 回收器选择 JVM给了三种选择:串行收集器、并行收集器、并发收集器,但是串行收集器只适用于小数据量的情况,所以这里的选择主要针对并行收集器和并发收集器。默认情况下,JDK5.0以前都是...
JVM参数调优、垃圾回收算法及原理体系.docx
1.JVM的gc概述 gc即垃圾收集机制是指...在设置了上述参数后可以通过Visualgc 来观察垃圾回收的一些参数状态,再做相应的调整来改善性能。一般的标准是减少fullgc的次数,最好硬件支持使用并行垃圾回收(要求多CPU)。
JVM的垃圾回收机制详解和调优,gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存。java语言并不要求jvm有gc,也没有规定gc如何工作。不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和...
jvm内存模型,jvm脑图,jvm调优,jvm垃圾回收算法,jvm垃圾回收器,逃逸算法等总结。
一个PPT包含 java内存模型,class运行机制。 java jvm垃圾回收算法 java jvm gc常见垃圾回收算法分析 java jvm调优
JVM的内容分享,包含JVM的优化目标、优化原则、JVM组成、内存区域划分、垃圾回收算法、垃圾回收器、FullGC触发时机、对象布局、元空间存储、GC调优
JVM实战参数调优与垃圾回收机制算法资料
JVM体系结构与GC调优相关介绍,包含JVM体系结构、常用GC算法、内存管理、垃圾回收器、虚拟机调优、相关监控工具等
假定你已经了解了运行时的数据区域和常用的垃圾回收算法,也了解了Hotspot支持的垃圾回收器。 一、cpu占用过高 cpu占用过高要分情况讨论,是不是业务上在搞活动,突然有大批的流量进来,而且活动结束
第37节垃圾回收算法-标记整理算法和分代收集算法00:05:24分钟 | 第38节垃圾收集器-serial收集器详解00:09:45分钟 | 第39节垃圾收集器-parnew收集器详解00:04:53分钟 | 第40节垃圾收集器-parallel收集器详解00:11:...
最近总结JVM内存调优的一些东西,基本上是网上一些资料的汇总。 文章从算法,垃圾回收机制等多个方面对JVM的工作机制进行描述,使读者对JVM 有个全面的了解。