jvm-GC日志查看

模拟出频繁Young GC

JVM参数设置

设置堆内存,快速模拟出垃圾回收

-XX:NewSize=5242880 -XX:MaxNewSize=5242880 -XX:InitialHeapSize=10485760 -XX:MaxHeapSize=10485760 -XX:SurvivorRatio=8 -XX:PretenureSizeThreshold=10485760 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC

“-XX:InitialHeapSize”和“-XX:MaxHeapSize”就是初始堆大小和最大堆大小

“-XX:NewSize”和“-XX:MaxNewSize”是初始新生代大小和最大新生代大小

“-XX:PretenureSizeThreshold=10485760”指定了大对象阈值是10MB、

上面参数设置堆内存10MB,其中新生代是5MB内存空间,其中Eden区占4MB,每个Survivor区占0.5MB,

大对象必须超过10MB才会直接进入老年代,年轻代使用ParNew垃圾回收器,老年代使用CMS垃圾回收器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ul4vtdA-1620222535690)(F:\学习\学习笔记\jvm\images\堆内存设置.png)]

打印出JVM GC日志

-XX:+PrintGCDetils:打印详细的gc日志
-XX:+PrintGCTimeStamps:这个参数可以打印出来每次GC发生的时间
-Xloggc:gc.log:这个参数可以设置将gc日志写入一个磁盘文件

  • 完整JVM参数设置
-XX:NewSize=5242880
-XX:MaxNewSize=5242880
-XX:InitialHeapSize=10485760
-XX:MaxHeapSize=10485760
-XX:SurvivorRatio=8
-XX:PretenureSizeThreshold=10485760
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:gc.log

示例代码

public static void main(String[] args) {
   
	byte[] array1 = new byte[1024 * 1024];
    array1 = new byte[1024 * 1024];
    array1 = new byte[1024 * 1024];
    array1 &
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以通过以下步骤查看 JVM Full GC 的具体原因: 1. 首先,您需要在 JVM 启动时添加以下参数:-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:<log_file_path> 2. 然后,您需要分析生成的 GC 日志文件,查找 Full GC 的记录。 3. 在 Full GC 记录中,您可以查看以下信息: - Full GC 发生的原因,例如内存不足、永久代满、CMS GC 失败等。 - Full GC 前后堆内存的使用情况,以及 GC 前后各代内存的使用情况。 - Full GC 所花费的时间,以及 Full GC 后堆内存的使用情况。 通过分析这些信息,您可以确定 Full GC 的具体原因,并采取相应的措施来优化应用程序的性能。 ### 回答2: 查看JVM Full GC的具体原因可以通过以下步骤进行: 1. 监控工具:使用一些常见的JVM性能监控工具,如JConsole、VisualVM、Java Mission Control等。这些工具可以提供实时的JVM运行信息,其中包含Full GC的相关指标和堆内存的使用情况。 2. 日志分析:查看应用程序的日志文件,搜索其中包含GC的相关日志。根据GC日志中的时间戳、GC类型和相关指标(如堆内存的使用情况、对象生命周期等),可以进一步分析Full GC的原因。 3. 分析GC日志:当JVMGC日志被启用时,可以通过分析GC日志来了解Full GC的具体原因。GC日志中会记录GC活动的详细信息,包括GC类型、GC时间、GC前后堆内存的使用情况等。 4. 堆内存分析工具:使用一些堆内存分析工具,如Eclipse Memory Analyzer Tool(MAT),通过导入堆转储快照文件,可以分析堆内存中的对象分布、对象引用关系等,从而找出可能导致Full GC的原因。例如,一些内存泄漏或者大对象的创建可能导致堆内存不足,进而引发Full GC的发生。 5. JVM参数调整:根据分析结果,如果是堆内存不足导致Full GC的话,可以考虑调整JVM的相关参数,如-Xmx(最大堆大小)、-Xms(初始堆大小)等,增加堆内存的分配。 综上所述,通过使用监控工具、分析GC日志、堆内存分析工具以及调整JVM参数等方法,可以查看JVM Full GC的具体原因。 ### 回答3: 要查看JVM Full GC的具体原因,可以按照以下步骤进行: 1. 设置JVM日志级别:在启动JVM时,使用-XX:+PrintGCDetails或-XX:+PrintGCTimeStamps等参数,将JVMGC日志级别设置为详细模式。这样可以确保在日志中记录Full GC事件的详细信息。 2. 分析GC日志:定期检查和分析JVMGC日志。在GC日志中,Full GC事件通常以“Full GC”或“Full GC(System)”的形式出现。同时会显示一些关键信息,如Full GC消耗的时间、GC前后堆内存的情况等。 3. 查看GC原因:在GC日志中,找到Full GC事件的触发原因。可能的原因包括年轻代或老年代空间不足、永久代空间不足、老年代对象引用链过长等。根据Full GC事件的触发原因,可以进一步分析和解决问题。 4. 使用工具进行分析:可以使用一些专门的工具来分析GC日志,如GCViewer、GCMV等。这些工具可以图形化地展示GC事件的情况,包括GC发生的次数、GC消耗的时间、堆内存的变化等。通过这些工具,可以更直观地查看和分析Full GC的具体原因。 5. 进行性能调优:根据Full GC的具体原因,进行相应的性能调优操作。例如,如果是堆内存不足导致的Full GC,可以通过增加堆内存大小来解决问题;如果是对象引用链过长导致的Full GC,可以优化代码,减少对象间的引用链长度等。 通过以上方法,可以查看JVM Full GC的具体原因,并根据需要进行相应的优化和调整,以提高系统性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值