主页 > 人工智能  > 

【JVM】一文掌握JVM垃圾回收机制

【JVM】一文掌握JVM垃圾回收机制

作为Java程序员,除了业务逻辑以外,随着更深入的了解,都无法避免的会接触到JVM以及垃圾回收相关知识。JVM调优是一个听起来很可怕,实际上很简单的事。 感到可怕,是因为垃圾回收相关机制都在JVM的C++层实现,我们在Java开发中看不见摸不着;而实际很简单,是因为它说到底,也只是JVM替我们实现的垃圾对象回收机制,也是普通的程序代码,只要理解了垃圾回收器的底层设计思想,掌握JVM调优并非难事!

一、JVM内存模型

元数据区:JDK8之前是方法区。存放虚拟机加载的:类型信息,域(Field)信息,方法(Method)信息,常量,静态变量,即时编译器编译后的代码缓存 虚拟机栈:虚拟机栈中保存了每一次方法调用的栈帧信息,栈帧中包含以下信息:

局部变量表:保存函数 (即方法) 的局部变量 操作数栈:保存计算过程中的结果,即临时变量 动态链接:指向方法区的运行时常量池。字节码中的方法调用指令以常量池中指向方法的符号引用为参数。 方法的返回地址

本地方法栈:和虚拟机栈功能上类似,它管理了native方法的一些执行细节,而虚拟机栈管理的是Java方法的执行细节。 程序计数器:程序计数器记录线程执行的字节码行号,如果当前线程正在运行native方法则为空。每个线程都有自己的计数器 堆:JVM中产生的实例对象的存储位置

所谓的垃圾回收,主要就是回收JVM中堆内存的区域

二、垃圾定义 引用计数(ReferenceCount):存在循环引用的问题,漏掉循环引用的垃圾 根可达算法(RootSearching):判断对象是否可通过引用寻到JVM的根节点,不能则是垃圾 三、垃圾回收算法 标记清除(mark sweep) - 位置不连续 产生碎片 效率偏低(两遍扫描)

拷贝算法 (copying) - 没有碎片,浪费空间

标记压缩(mark compact) - 没有碎片,效率偏低(两遍扫描,指针需要调整)

标签:

【JVM】一文掌握JVM垃圾回收机制由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【JVM】一文掌握JVM垃圾回收机制