Java面试题之JVM

JVM整体架构

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

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

当full GC也回收不了就会OOM

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

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

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

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

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

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

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

电商网站优化

调优:

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

相关推荐
Ajiang28247353041 小时前
对于C++中stack和queue的认识以及priority_queue的模拟实现
开发语言·c++
幽兰的天空1 小时前
Python 中的模式匹配:深入了解 match 语句
开发语言·python
Theodore_10224 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
工业甲酰苯胺5 小时前
Redis性能优化的18招
数据库·redis·性能优化
冰帝海岸5 小时前
01-spring security认证笔记
java·笔记·spring
世间万物皆对象5 小时前
Spring Boot核心概念:日志管理
java·spring boot·单元测试
没书读了6 小时前
ssm框架-spring-spring声明式事务
java·数据库·spring
----云烟----6 小时前
QT中QString类的各种使用
开发语言·qt
lsx2024066 小时前
SQL SELECT 语句:基础与进阶应用
开发语言
小二·6 小时前
java基础面试题笔记(基础篇)
java·笔记·python