JVM简单比较

GC Roots

在Java语言中,GC Roots包括:
虚拟机栈中引用的对象。
方法区中类静态属性实体引用的对象。
方法区中常量引用的对象。
本地方法栈中JNI引用的对象。

Sun JVM

典型内存分配
年轻代(young)
年轻代分三个区。一个Eden区,两个Survivor区。大部分对象在Eden区中生成。
年老代(tenured)
持久代(perm)

sun jdk垃圾回收过程:
1.通过Survivor倒腾Eden区的数据,倒腾完Eden一次,叫YGC,触发条件是Eden达到规定的设定的值。
2.tenured达到一定比率后发生整体的gc,称为fullgc
3. perm区的class,如果没有对象引用,也会在gc的时候进行释放

jrockit JVM

整个内存区域都作为一个大的内存空间,不在像sun jdk那样的分代回收。07年使用比较过sun jdk的垃圾回收机制,非常好。oracle并购后,再没研究过。

Open JVM

没用过

zing jvm

后起之秀,号称最快JVM,垃圾回收不会出现停顿,gc时间在10ms,无FullGc概念,商业授权非常贵。国内品友互动使用,每天处理160亿请求。

你可能感兴趣的:(java,jvm,jdk,内存分配)