JVM垃圾回收详解

本文详细探讨了JVM内存模型以及垃圾回收的工作原理和优化策略,帮助读者深入掌握Java虚拟机的内存管理机制。
摘要由CSDN通过智能技术生成

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/gcview
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值