论坛首页 Java企业应用论坛

JVM内存管理:深入垃圾收集器与内存分配策略

浏览 43735 次
该帖已经被评为精华帖
作者 正文
   发表时间:2010-11-05  
先收了,有空再看
0 请登录后投票
   发表时间:2010-11-06   最后修改:2010-11-06
嗯,投了精华。楼主加油~~

不满的部分:
IcyFenix 写道
关于方法区

  方法区即后文提到的永久代,很多人认为永久代是没有GC的,《Java虚拟机规范》中确实说过可以不要求虚拟机在这区实现GC,而且这区GC的“性价比”一般比较低:在堆中,尤其是在新生代,常规应用进行一次GC可以一般可以回收70%~95%的空间,而永久代的GC效率远小于此。虽然VM Spec不要求,但当前生产中的商业JVM都有实现永久代的GC

规范里叫做方法区的抽象区域,与“永久代”并不等价。只是在现在的Oracle (Sun) HotSpot使用“永久代”来实现方法区而已。

服务器端主流的高性能JVM现在就三种,一个是HotSpot(其中Sun的原始版本用得最多,由其衍生出来的Azul版与HP版也颇有应用;Apple的Mac OS上的JVM也是从Sun的版本衍生出来的,不过拿Mac来做服务器的大概不多吧);一个是Oracle (BEA)的JRockit;还有一个是IBM的JVM,现在主要在用的是J9。这之中,只有HotSpot是有PermGen的,而JRockit与J9都没有;连Azul版HotSpot也经过改进早已去除了PermGen。概念上说这些JVM都有符合规范的“方法区”,但并不一定要用PermGen来实现就是了。

甚至连Oracle (Sun)的HotSpot也实质性开始去除PermGen的工作了。请参考最近的hotspot-dev邮件列表里的一封邮件:Request for review (XL) 6990754: Use native memory and reference counting to implement SymbolTable
等JDK 7正式发布的时候,里面的HotSpot多半就已经没有PermGen了。
0 请登录后投票
   发表时间:2010-11-06  
RednaxelaFX 写道
嗯,投了精华。楼主加油~~

不满的部分:
IcyFenix 写道
关于方法区

  方法区即后文提到的永久代,很多人认为永久代是没有GC的,《Java虚拟机规范》中确实说过可以不要求虚拟机在这区实现GC,而且这区GC的“性价比”一般比较低:在堆中,尤其是在新生代,常规应用进行一次GC可以一般可以回收70%~95%的空间,而永久代的GC效率远小于此。虽然VM Spec不要求,但当前生产中的商业JVM都有实现永久代的GC

规范里叫做方法区的抽象区域,与“永久代”并不等价。只是在现在的Oracle (Sun) HotSpot使用“永久代”来实现方法区而已。

服务器端主流的高性能JVM现在就三种,一个是HotSpot(其中Sun的原始版本用得最多,由其衍生出来的Azul版与HP版也颇有应用;Apple的Mac OS上的JVM也是从Sun的版本衍生出来的,不过拿Mac来做服务器的大概不多吧);一个是Oracle (BEA)的JRockit;还有一个是IBM的JVM,现在主要在用的是J9。这之中,只有HotSpot是有PermGen的,而JRockit与J9都没有;连Azul版HotSpot也经过改进早已去除了PermGen。概念上说这些JVM都有符合规范的“方法区”,但并不一定要用PermGen来实现就是了。

甚至连Oracle (Sun)的HotSpot也实质性开始去除PermGen的工作了。请参考最近的hotspot-dev邮件列表里的一封邮件:Request for review (XL) 6990754: Use native memory and reference counting to implement SymbolTable
等JDK 7正式发布的时候,里面的HotSpot多半就已经没有PermGen了。


谢谢,受教了。

之前看过很多篇兄台关于VM以及编译原理的文章,获益良多。
0 请登录后投票
   发表时间:2010-11-07  
引用

规则一:-XX:SurvivorRatio=8决定了新生代中eden与survivor的空间比例是1:8


这里有个错误,应该是8:1,特此更正。
0 请登录后投票
   发表时间:2010-11-07   最后修改:2010-11-07
antipro 写道
看不太懂哦

可以先看看下面这篇文章,再回头看这篇。
http://pengjiaheng.iteye.com/blog/528034
0 请登录后投票
   发表时间:2010-11-07   最后修改:2010-11-07
一个字:深
0 请登录后投票
   发表时间:2010-11-13   最后修改:2010-11-13
引用
规则四:如果在survivor空间中相同年龄所有对象大小的累计值大于survivor空间的一半,大于或等于年龄的对象就可以直接进入老年代,无需达到MaxTenuringThreshold中要求的年龄。

年龄?
  不是应该还有第三章的嘛?

谢谢IcyFenix的分享
0 请登录后投票
   发表时间:2010-11-15  
写得很是通俗易懂,也很容易记忆,谢谢!
0 请登录后投票
   发表时间:2010-12-14  
不错,进一步了解了垃圾回收的知识,期待后续章节
0 请登录后投票
   发表时间:2010-12-14   最后修改:2010-12-14
受益良多,谢谢,呵呵


分享一个harmony的GC PPT,不过没看懂,呵呵
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics