Java面试题之JVM

JVM整体架构

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

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

当full GC也回收不了就会OOM

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

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

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

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

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

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

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

电商网站优化

调优:

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

相关推荐
南宫生2 分钟前
力扣-图论-70【算法学习day.70】
java·学习·算法·leetcode·图论
zfj3212 分钟前
java日志框架:slf4j、jul(java.util.logging)、 log4j、 logback
java·log4j·logback·java日志框架·slf4j·jul
程序猿阿伟9 分钟前
《探索 Apache Spark MLlib 与 Java 结合的卓越之道》
java·spark-ml·apache
一條狗14 分钟前
隨筆 20241224 ts寫入excel表
开发语言·前端·typescript
向阳121818 分钟前
sentinel来源访问控制(黑白名单)
java·sentinel
Takumilove19 分钟前
MQTT入门:在Spring Boot中建立连接及测试
java·spring boot·后端
yayaya15228 分钟前
javaScriptBOM
开发语言·javascript·ecmascript
潜洋31 分钟前
Spring Boot 教程之三十六:实现身份验证
java·数据库·spring boot
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭35 分钟前
C#都可以找哪些工作?
开发语言·c#
arnold6640 分钟前
深入探索 ClickHouse:性能优化之道
clickhouse·性能优化