jvm
guohnu
这个作者很懒,什么都没留下…
展开
-
为什么major gc要比minor gc慢很多
能想到的原因有两个: 1. major gc使用的算法复杂度比minor gc高;major gc 采取的是mark-sweept或者mark-conpact,minor gc也要标记,但minor gc是标记后复制。将要被复制到的survivor区又是一个连续的内存区。major gc的清除可能快一些,但是整理操作这个复杂度就要高很多了。 2.major原创 2017-02-10 20:17:08 · 1028 阅读 · 0 评论 -
对jvm卸载class条件的理解
类需要满足以下3个条件才能算是“无用的类” 1. 该类所有的实例已经被回收 2. 加载该类的ClassLoder已经被回收 3. 该类对应的java.lang.Class对象没有任何对方被引用 第2个条件有一些费解。可能是因为ClassLoder保存了类加载到jvm方法区的位置信息,保存了类的引用。但是ClassLoader又不具备主动卸载类的功能,所以类加载后,引...原创 2017-02-07 23:38:27 · 452 阅读 · 0 评论 -
为什么major gc要比minor gc慢很多
能想到的原因有两个: 1. major gc使用的算法复杂度比minor gc高; major gc 采取的是mark-sweept或者mark-conpact,minor gc也要标记,但minor gc是标记后复制。将要被复制到的survivor区又是一个连续的内存区。major gc的清除可能快一些,但是整理操作这个复杂度就要高很多了。 2.major gc要处理的...原创 2017-02-09 22:17:24 · 438 阅读 · 0 评论 -
为什么不把所有的class文件编译成机器码
jvm执行方法有两种方式:解释执行和编译执行。编译执行是直接执行本地的机器码,编译执行的效率要高于解释执行的效率。 那么,为什么不直接把java代码编译成机器码呢,这样运行起来会更快? 直接编译成机器码的话,那不就是C语言的做法了么。java有一个特性,是可以运行中动态加载类。要支持运行中动态加载类这个特性,就没法做到全部编译成机器码,编译的时候都不知道运行时的类是什么,...原创 2017-02-11 16:39:41 · 1488 阅读 · 0 评论 -
对jvm卸载class条件的理解
原创 2017-02-07 23:38:27 · 166 阅读 · 0 评论 -
为什么major gc要比minor gc慢很多
原创 2017-02-09 22:17:24 · 196 阅读 · 0 评论 -
为什么不把所有的class文件编译成机器码
原创 2017-02-11 16:39:41 · 451 阅读 · 0 评论