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:
未完待续。。。。
第一步,如何找到哪些东西需要回收。涉及到两种算法。
第一种:引用计数算法:简单理解。在每一个对象的头部添加一个计数器。外部增加一个引用时,计数器加1。一个引用被干掉时,计数器减1。jvm进行付费离回收时,只需检查计数器值是否为0即可实现垃圾回收。
缺陷:如果有一个对象A,持有B的引用 。另有一个对象B持有对象A的引用。那么就会造成相互引用,jvm在回收时,当这两个对象不再使用时。jvm将不能回收这两个对象。
第二种:可达性分析算法。简单理解:jvm将某些对象作用根,在jvm回收之前。会从这些根对象出发。去判断其它对象到根对象之间是否能够形成链。如果可达,则将该对象标记成不回收。jvm回收时,直接回收没有标记的对象即可。
可达性分析算法的本质是通过找出所有活对象来把其余空间认定为“无用”,而不是找出所有死掉的对象并回收它们占用的空间。
其中某些对象是指:
1、虚拟机栈(栈帧中的本地变量表)中引用的对象,
2、方法区中类静态属性引用的对象
3、方法区中常量引用的对象
4、本地方法栈中JNI(即一般说的Native)引用 的对象
举例说明1:
未完待续。。。。
相关文章推荐
- JVM学习笔记(四)------内存调优
- 一份关于jvm内存调优及原理的学习笔记
- JVM调优- 学习笔记(转)
- JVM学习笔记(四)------内存调优
- Java基础学习总结(96)——Java虚拟机JVM及Tomcat中的JVM有关内存的设置与调优
- 【知了堂学习笔记】java中的编译命令和JVM性能调优监控工具
- JVM调优学习总结
- JVM学习之:调优总结 -Xms -Xmx -Xmn -Xss
- Jvm原理及调优学习
- JVM调优- 学习笔记(转)
- java虚拟机学习-JVM调优总结-典型配置举例(10)
- 深入学习JVM内存设置原理和调优
- JVM学习笔记(四)------内存调优
- JVM学习之:调优总结 -Xms -Xmx -Xmn -Xss
- 深入学习JVM内存设置原理和调优
- 《Java程序性能优化》学习笔记 Ⅳ JVM调优
- JVM调优-学习篇
- JVM学习:使用visualGC调优Eclipse启动过程