您的位置:首页 > 其它

Jvm调优及学习

2018-03-19 23:20 155 查看
jvm调优:

第一步,如何找到哪些东西需要回收。涉及到两种算法。

第一种:引用计数算法:简单理解。在每一个对象的头部添加一个计数器。外部增加一个引用时,计数器加1。一个引用被干掉时,计数器减1。jvm进行付费离回收时,只需检查计数器值是否为0即可实现垃圾回收。

缺陷:如果有一个对象A,持有B的引用 。另有一个对象B持有对象A的引用。那么就会造成相互引用,jvm在回收时,当这两个对象不再使用时。jvm将不能回收这两个对象。

第二种:可达性分析算法。简单理解:jvm将某些对象作用根,在jvm回收之前。会从这些根对象出发。去判断其它对象到根对象之间是否能够形成链。如果可达,则将该对象标记成不回收。jvm回收时,直接回收没有标记的对象即可。

可达性分析算法的本质是通过找出所有活对象来把其余空间认定为“无用”,而不是找出所有死掉的对象并回收它们占用的空间。

其中某些对象是指:

1、虚拟机栈(栈帧中的本地变量表)中引用的对象,

2、方法区中类静态属性引用的对象

3、方法区中常量引用的对象

4、本地方法栈中JNI(即一般说的Native)引用 的对象

举例说明1:

未完待续。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: