Java面试题之JVM

JVM整体架构

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

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

当full GC也回收不了就会OOM

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

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

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

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

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

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

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

电商网站优化

调优:

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

相关推荐
Android技术之家3 分钟前
Kotlin与Compose:Android开发的现代化变革
android·java·开发语言·kotlin
失散134 分钟前
分布式专题——10.3 ShardingSphere实现原理以及内核解析
java·分布式·架构·shardingsphere·分库分表
十八旬13 分钟前
【超简单】后端入门案例-基于SpringBoot+MyBatis-plus+MySQL图书管理系统
java·开发语言·idea·intellij idea·项目实战
0_0梅伊阁诗人17 分钟前
Redis
开发语言·笔记·python
wearegogog12326 分钟前
C#与Twincat 2 实现上位机控制软PLC功能
开发语言·c#
好多1735 分钟前
《JVM遇到GC的常见解决办法》
jvm
猫林老师36 分钟前
LazyForEach性能优化:解决长列表卡顿问题
性能优化
zhz521438 分钟前
Spring Boot + Redis 缓存性能优化实战:从5秒到毫秒级的性能提升
java·spring boot·redis·缓存·vue
卓码软件测评41 分钟前
第三方软件测评机构:MongoDB分片集群写入吞吐量与延迟第三方性能测评
数据库·mongodb·性能优化·压力测试
lifallen42 分钟前
Hadoop MapOutputBuffer:Map高性能核心揭秘
java·大数据·数据结构·hadoop·算法·apache