JVM垃圾回收详解

本文详细探讨了JVM内存模型以及垃圾回收的工作原理和优化策略,帮助读者深入掌握Java虚拟机的内存管理机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:JVM内存模型

1 jdk 1.8 里主要是 分成了 堆(新生代【eden,s0,s1】,老年代,元空间),方法区,程序计数器,虚拟机栈,本地方法栈
2 对象和共享变量放到堆里,类信息,方法和字符串常量池放到方法区里,栈里面都是内存地址值和局部变量
3 本地方法栈——私有,存储线程的本地方法调用信息,也是主要是栈帧。是c 语言实现
4 程序计数器——私有,记录线程的当前执行的位置信息。

2:jvm 垃圾回收分析和优化

1. 回收发生在哪里?主要是 堆和方法区中的对象和废弃常量和无用的类
2. 对象在什么时候可以被回收?引用计数和可达性分析算法
3. 如何回收?GC 算法 标记清楚,标记整理,复制算法,分代收集 具体看下图
4. jmap -heap pid 查看jvm 参数配置和使用情况
5. jvm 性能几个指标 
 吞吐量:系统总运行时间 = 应用程序耗时 +GC 耗时。如果系统运行了 100 分钟,GC 耗时 1 分钟,则系统吞吐量为 99%。
 停顿时间:指垃圾收集器正在运行时,应用程序的暂停时间。对于串行回收器而言,停顿时间可能会比较长;并行时间停顿时间短但是吞吐量低
 垃圾回收频率:通常垃圾回收的频率越低越好,增大堆内存空间可以有效降低垃圾回收发生的频率
6. 查看 & 分析 GC 日志 
-XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:./gclogs  //这里是以时间(日期形式)形式打出详细的GC的日志 输出到日志文件
日志分析工具 https://sourceforge.net/projects/gcviewer/ https://www.gceasy.io/index.jsp
7. GC 调优策略
 1. 降低 Minor GC 频率 
 通常情况下,由于新生代空间较小,Eden 区很快被填满,就会导致频繁 Minor GC,因此我们可以通过增大新生代空间来降低 Minor GC 的频率。
 2. 降低 Full GC 的频率 (堆内存空间不足或老年代对象太多,会触发 Full GC)
 减少大对象的创建 增大堆内存空间 选择合适的GC回收器
8. 问题  minor gc是否
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值