Java面试题之JVM

JVM整体架构

堆

minor gc:回收年轻代的垃圾对象

full GC:回收整个堆的垃圾对象

当full GC也回收不了就会OOM

STW运行时会停掉所有用户线程

JVM调优的真正目的就是为了减少STW的次数

为什么会有STW:避免非垃圾对象发生变化,暂停用户线程,收集垃圾,再回复用户线程

首先,如果不暂停用户线程,就意味着在垃圾收集过程中会持续产生新的垃圾对象,无法完全清理干净。

其次,用户线程的运行必然会导致对象的引用关系发生改变,可能出现两种情况:多标和漏标

多标:原本并不是垃圾对象,但在垃圾收集过程中,用户线程修改了其引用关系,导致垃圾收集器将其误认为是垃圾。这种情况相对较好,只会产生一些临时的浮动垃圾,下次垃圾收集过程时会被清理掉。

漏标:原本是垃圾对象,但在垃圾收集过程中,用户线程重新将其引用指向了该对象,如果垃圾收集器错误地将其回收,将导致程序运行错误。

电商网站优化

调优:

分析系统的业务情况,压力情况,对Java虚拟机各块区域进行合理的分配,尽量在年轻代GC回收

相关推荐
code2cat7 小时前
Java工具篇之Maven:从pom.xml到测试通过的JAR
xml·java·maven
wuminyu13 小时前
JVM规范学习总结:解释器与JIT编译器如何处理JVM字节码
java·linux·c语言·jvm·c++
txxzjmzlh13 小时前
SpringBoot 配置⽂件
java·spring boot·spring
小徐不徐说13 小时前
序列化与反序列化:把 C++ 对象可靠地保存下来
开发语言·数据库·c++·php
ragnwang14 小时前
Notes: Python pybind11 import C++ module
开发语言·c++·python
Wang's Blog14 小时前
Java 项目实战: 交友项目 - 搜索附近的功能概述和分析
java·开发语言·交友
骑着蜗牛撵大象32714 小时前
大模型 Agent 的沙箱护栏:gVisor 隔离、出口白名单与审计闭环
java·开发语言·jvm·安全·agent沙箱·gvisor·microvm
独泪了无痕14 小时前
Hutool之LocalDateTimeUtil:让时间间隔操作如虎添翼
java
Dxy123931021615 小时前
JS DES 加密详解
开发语言·javascript·arcgis
充值内卷15 小时前
我给桌面加了个鱼缸:C++ 写后端,WebView2 里养一座 Three.js 小岛
开发语言·javascript·c++