java面试—JVM基础理解及GC调优

本文详细探讨了JVM的组成,包括栈、程序计数器、字节码执行引擎、方法区和本地方法。重点介绍了垃圾回收机制,如可达性分析算法、GC Roots和堆内存管理,特别提到了G1垃圾收集器的优势。同时,讨论了JVM调优的目标和工具,如阿里巴巴的Arthas,以及为何在GC过程中需要Stop-the-World机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JVM性能调优

JVM性能调优面试题哔哩哔哩

**java跨平台特性:**由于java虚拟机JVM会在软件层面屏蔽不同操作系统在底层硬件和指令上的不同。(下载安装JDK时,会选择不同系统版本,分不同系统的原因就是JVM对不同操作系统的实现不一样)

JVM组成

由三大块组成:
类转载子系统---->运行时数据区(JVM中的一大块内存)---->字节码执行引擎

当java中的class文件开始执行时,JVM就开始工作。最大的一块区域就是内存区域,虚拟机调优也就是对运行时数据区的调优。

在这里插入图片描述

栈(线程)

只要一个线程被运行,java虚拟机就会为这个线程分配一个专属的空间,这个空间用于存放这个线程中的局部变量

栈帧内存空间

当没运行一个线程中的方法时,虚拟机会从该线程所分配的空间中分配出一块空间用于存储该方法中的局部变量。线程栈为每个方法分配空间的顺序符合数据栈的逻辑(先进后出),也就是后执行的方法所分配的空间要先被回收,先执行的方法所分配的空间更后被回收

在这里插入图片描述

线程栈中的方法块内存(栈帧)的组成

局部变量表、操作数栈、动态链接、方法出口

操作数栈:存储的就是一些数字数据,就是一个数据栈,对数据的临时存储,对数据的操作,都需要将数据存放到这个操作数栈中去。比如两个数相乘,首先会将相乘的两个数据常量放进操作数栈,然后执行乘法指令,乘法指令会从操作数栈的顶部取出最上面的两个数做乘法运算,再将计算的结果压入操作数栈。

局部变量表:就是存放该方法中定义的一些变量,java中定义一个变量,将要赋值的数据(一个常量)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莽晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值