当前位置: 首页 > news >正文

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

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

jvm

一、JVM内存模型

JVM内存模型

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

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

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

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

二、垃圾定义

  1. 引用计数(ReferenceCount):存在循环引用的问题,漏掉循环引用的垃圾
  2. 根可达算法(RootSearching):判断对象是否可通过引用寻到JVM的根节点,不能则是垃圾

三、垃圾回收算法

  1. 标记清除(mark sweep) - 位置不连续 产生碎片 效率偏低(两遍扫描)

标记清除

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

拷贝算法

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

标记压缩

相关文章:

  • 计算机基础面试题 |04.精选计算机基础面试题
  • 微软开源,全平台通用:Shell 自动补全工具 | 开源日报 No.132
  • uni-app tabbar组件
  • R_handbook_统计分析
  • ES应用_ES原理
  • 【c语言】飞机大战2
  • centos 安装 配置 zsh
  • Stable Diffusion WebUI制作光影文字效果
  • Android Studio 如何隐藏默认标题栏
  • 为即将到来的量子攻击做好准备的 4 个步骤
  • QT QPluginloader 加载失败,出现Unknown error 0x000000c1的问题
  • 1.3 FMEA 实施指南
  • 车路协同中 CUDA 鱼眼相机矫正、检测、追踪
  • Qt高质量的开源项目合集
  • 浏览器强缓存和协商缓存
  • HarmonyOS应用程序包快速修复
  • 在ClickHouse中使用聚合组合器
  • appium安装运行报错的解决方案
  • MATLAB中./和/,.*和*,.^和^的区别
  • 【STM32】SPI通信
  • 人民日报头版:紧盯“学查改”,推动作风建设走深走实
  • 福建、广西等地有大暴雨,国家防总启动防汛四级应急响应
  • “80后”南京大学天文与空间科学学院教授施勇加盟西湖大学
  • 上博东馆常设陈列入选全国博物馆“十大精品”
  • 专利申请全球领先!去年我国卫星导航与位置服务产值超5700亿
  • 特朗普:将于19日分别与普京和泽连斯基通话