Java面试题之JVM

JVM整体架构

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

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

当full GC也回收不了就会OOM

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

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

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

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

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

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

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

电商网站优化

调优:

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

相关推荐
wregjru4 分钟前
【读书笔记】Effective C++ 条款3:尽可能使用const
开发语言·c++
FreeBuf_6 分钟前
“前缀替换“攻击引发恐慌:高度仿真的“Jackson“冒牌库入侵Maven中央仓库
java·python·maven
kylezhao20196 分钟前
C#手写串口助手
开发语言·c#
Kyln.Wu10 分钟前
【python实用小脚本-292】[HR揭秘]手工党点名10分钟的终结者|Python版Zoom自动签到+名单导出加速器(建议收藏)
开发语言·python·swift
普通网友10 分钟前
PictureSelector 相册全白不显示问题
java·开发语言
普通网友12 分钟前
用 Next.js 15 做图片查看网站:图片双击放大的交互坑与修复
开发语言·javascript·交互
独自破碎E15 分钟前
kafka中的时间轮实现
java·开发语言
程序员阿鹏19 分钟前
如何保证写入Redis的数据不重复
java·开发语言·数据结构·数据库·redis·缓存
uup25 分钟前
Future.get () 的潜在陷阱
java
JAY_LIN——825 分钟前
字符串函数(strncpy/cat/cmp、strstr、strtok、strerror)
c语言·开发语言