论坛首页 Java企业应用论坛

慢慢琢磨JVM——恭喜JavaEye重新开张

浏览 50221 次
该帖已经被评为良好帖
作者 正文
   发表时间:2010-11-25  
引用
伊甸区(Eden space)和幸存者区(Survivor pace),所有的类都是在伊甸区被new出来的。幸存区有两个: 0区(Survivor 0 space)和1区(Survivor 1 space)。当伊甸园的空间用完时,程序又需要创建对象,JVM的垃圾回收器将对伊甸园区进行垃圾回收,将伊甸园区中的不再被其他对象所引用的对象进行销毁。然后将伊甸园中的剩余对象移动到幸存0区。若幸存0区也满了,再对该区进行垃圾回收,然后移动到1区。那如果1区也满了呢?再移动到养老区。


这段话问题比较多,对象并不是按照eden->survivor 0->survivor 1->old gen的次序移动,每次针对young gen的scavenge gc是将eden和from survivor space中的活跃对象移到to survivor space,from和to每次scavenge gc都会切换,所以需要两个survivor space。如果移动过程中to space满了,可以放入old gen,如果old gen满了,触发full gc,不会有专门针对survivor space的gc
0 请登录后投票
   发表时间:2010-11-25  
分离的北极熊 写道
问:我听说类变量是在JVM启动时就初始化好的,和你这说的不同呀!
答:那你是道听途说,信我的,没错。

class test{
static int i;

……main(String[] args){
  sysout(i);
}
}
难道它会报错?



不会报错,在Method Area的Fields区中定义了每个Field的Access Flag、Name Index和Attribute的指针,在你sysout(i)时,才在constant pool中分配了0。
0 请登录后投票
   发表时间:2010-11-25  

没有太深入,这些基本上比较大众的介绍

不过自己总结写出来挺辛苦的 楼主加油!
0 请登录后投票
   发表时间:2010-11-25  
想问一下static方法是否安全,线程安全?
是否能用jvm内存机制来解释一下。。。。
0 请登录后投票
   发表时间:2010-11-25   最后修改:2010-11-25
OutOfMemoryError一共是五种
除了OutOfMemoryError: Java Heap Space和OutOfMemoryError: PermGen space, or Permanent Generation Size外还有如下三种:
1.OutOfMemoryError: unable to create new native thread
2.OutOfMemoryError: GC overhead limit exceeded
3.OutOfMemoryError: requested 32756 bytes for ChunkPool::allocate. Out of swap space?
0 请登录后投票
   发表时间:2010-11-25  
虽然基础,但是知道原理的不多
0 请登录后投票
   发表时间:2010-11-25  
我最关心内存溢出,有什么好的方法解决。或者什么好的方法查找
0 请登录后投票
   发表时间:2010-11-25  
常量池(constant pool):按照顺序存放程序中的常量,并且进行索引编号的区域。比如int i =100,这个100就放在常量池中。

对于楼主说的这点我很疑惑,楼主可不可以告诉我,按照你的意思,i在栈中存的是神马吗?指向常量池(100)的引用么?对于基本类型来说,栈里面不是直接存值的嘛?
0 请登录后投票
   发表时间:2010-11-25  
楼主给下你参考资料的列表啊
0 请登录后投票
   发表时间:2010-11-25  
分离的北极熊 写道
问:我听说类变量是在JVM启动时就初始化好的,和你这说的不同呀!
答:那你是道听途说,信我的,没错。

class test{
static int i;

……main(String[] args){
  sysout(i);
}
}
难道它会报错?


我是这么理解的啊,如果是按照这边文章写的话,首先会执行class loader
loader这个.class 文件 然后去解释这个.class 把static 放到静态变量存在方法区中

不知道对不对。。 呵呵

恕我愚昧。
0 请登录后投票
论坛首页 Java企业应用版

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