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

JVM原理与实战

一、Java虚拟机概述
java程序通过虚拟机实现了java代码的跨平台。
二、java虚拟机运行过程:
类编译器编译java代码为class文件,
类加载器将class文件加载到jvm,
程序计数器控制程序的执行,
虚拟机栈存放局部变量,方法名,
堆存放java对象,
方法区存放常量及静态变量等,
jvm垃圾回收机制回收堆中内存。
三、内存模型
程序计数器:当前线程所执行的字节码的行号指示器,指向虚拟机字节码的位置。
虚拟机栈:
栈是线程私有的内存空间。在栈中保存的主要内容是栈帧。
方法被调用称为入栈,执行完毕就是出栈。
创建一个栈帧用于存储局部变量表、操作数栈、帧数据区等。
java堆是完全自动化管理,垃圾自动回收。
方法区是线程共享的,用于存储类信息。
元数据区:元空间并不在虚拟机中,而是使用的堆外的直接内存。
四、垃圾回收
可触及性:从根节点开始是否可以访问到某个对象,也说明这个对象是否被使用。
分为三种:可触及;可复活;不可触及
四种引用级别:
强引用、软引用、弱引用、虚引用
槽位复用
对象分配:栈上分配、TLAB分配、老年代分配、新生代分配。
栈上分配速度快,并且可以有效避免GC带来的负面影响。
标量替换:不可被分解的量,java的基础数据类型;聚合量是可以被分解的量。
TLAB:线程本地分配缓存区
垃圾回收法:
引用计数法:统计引用计数,引用少的先回收
标记清除法:标记+清除
复刻算法:内存分为两块,A内存存活对象复刻到B内存,清除掉A内存,使用B内存
标记压缩法:标记存活的对象,将所有存活的对象压缩到内存的一端,清理所有存活对象之外的空间。
分代算法:分为新生代和老年代,新生代采取复刻算法比较合适,老年代采用标记清除或标记压缩算法。
分区算法:分为连续的不同小区间。
五、垃圾收集器
串型回收器Serial收集器,单线程。适用于单核cpu。
新生代串行回收器采用:复刻算法
老年代串行回收器采用:标记压缩算法
将串行回收器并行化。
ParNew是一个新生代回收器,与串行回收器唯一不同的,就是采用并发方式执行GC。
ParallelGC回收器也采用的复制算法,提供一些设置系统吞吐量的参数用来控制GC行为。
ParallelOldGC,老年代的回收器。
并行回收器CMS,标记清除算法,多线程并发执行器,关心系统的停顿时间。
并行回收器CMS
1,初始标记
2,并发标记
3,预清理
4,重新标记
5,并发清理
6,并发重置
G1收集器:新生代GC,并发标记周期,混合收集,Full GC
新生代GC主要工作就是回收eden区和surivor区。
初始标记:标记从根节点直接到达的对象。
根区域扫描
并发标记
重新标记
六、JVM常用参数:
初始化内存/最大堆内存/GC日志
JVM监控优化
top命令:系统统计信息,进程信息
任务队列信息
vmstat命令:统计cpu,内存使用情况。
iostat工具
jps查看java进程
jstat:用于查看堆中的运行信息。
jinfo:用于查看运行中java进程的虚拟机参数
jmap:用于生成指定java进程的dump文件。用于查看堆内对象实例的统计信息。
jhat:命令用于分析jmap生成的堆快照。
jstack:用于导出指定java进程的堆栈信息。
jcmd:用于导出指定java进程的堆栈信息。

相关文章:

  • 【问题笔记】解决python虚拟环境运行脚本无法激活问题
  • 240419 leetcode exercises
  • 2025年最新版 Git和Github的绑定方法,以及通过Git提交文件至Github的具体流程(详细版)
  • DAY 49 leetcode 20--栈和队列.有效的括号
  • C++中动态多态类别浅析
  • C++之虚函数 Virtual Function
  • Matlab画海洋与大气变量的时间序列并带标记面的三维折线图--来源粉丝
  • 如何对docker镜像存在的gosu安全漏洞进行修复——筑梦之路
  • Macvlan 网络类型详解:特点、优势与局限性
  • C++入门七式——模板初阶
  • Nacos启动报错
  • 软件测试行业核心知识点的系统化梳理
  • 使用 TensorFlow 和 Keras 构建 U-Net
  • Python语法系列博客 · 第9期[特殊字符] 函数参数进阶:*args、**kwargs 与参数解包技巧
  • 混合精度训练中的算力浪费分析:FP16/FP8/BF16的隐藏成本
  • 深度学习--mnist数据集实现卷积神经网络的手写数字识别
  • 探索大语言模型(LLM):Transformer 与 BERT从原理到实践
  • 【OpenGL】OpenGL学习笔记-1:VS2019配置OpenGL开发环境
  • PR第一课
  • Arduino项目中硬件包括哪些部分
  • 人民日报:各地扎实开展学习教育,一体推进学查改
  • 平安银行一季度净赚超140亿元降5.6%,营收降13.1%
  • 42岁北京大学科学技术与医学史系副教授陈昊逝世
  • 上海警方:男子拍摄女性视频后在网上配发诱导他人违法犯罪文字,被行拘
  • 特朗普叫停已许可的海上风电,机构将美国风电前景下调40%
  • 工人日报社评:下放职称评审权,推动“以产聚才、以才兴产”