【JVM系列】GCeasy使用

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kuan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

一.介绍

1.官网地址

GCeasy 官网地址

2.简单介绍

GCeasy 是一个基于 Web 的垃圾回收日志分析工具,可以用于分析 JVM 的垃圾回收日志,提供可视化的分析结果和建议。GCeasy 可以分析所有主流的垃圾回收器,包括 CMS、G1、Parallel 和 Serial 等,支持多种垃圾回收日志格式,包括 GC log、Jstat log 和 JMX 等。

使用 GCeasy 可以帮助开发人员和运维人员快速定位 JVM 垃圾回收问题,包括内存泄漏、频繁 Full GC、停顿时间过长等常见问题。GCeasy 提供的分析结果包括垃圾回收统计信息、内存使用情况、各代空间使用情况、各代垃圾回收次数和停顿时间、垃圾回收器配置信息等。此外,GCeasy 还提供了一些优化建议,帮助用户优化 JVM 的垃圾回收性能。

GCeasy 的使用非常简单,只需要将垃圾回收日志文件上传到网站上即可,无需安装任何软件。GCeasy 还提供了免费和付费两个版本,免费版本可以分析大部分常见的垃圾回收日志,付费版本则支持更多的功能和更大规模的日志分析。

3.功能特性

image-20230725161016596

4.生成 gc 日志

image-20230725175923986

在 idea 中加入启动参数

-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/Users/csh/hong.log

5.服务器 gc 日志

Dockerfile 配置文件

FROM deploy.deepexi.com/dce/d2sf-skywalking-base:jdk8-alpine-8.5.0

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

WORKDIR /home
USER root

ENV PROFILE="dev"
ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8
ENV JAVA_OPTS="\
-Xms4g \
-Xmx4g \
-Xmn2g \
-Xss1m \
-XX:SurvivorRatio=8 \
-XX:MaxTenuringThreshold=10 \
-XX:+UseConcMarkSweepGC \
-XX:CMSInitiatingOccupancyFraction=70 \
-XX:+UseCMSInitiatingOccupancyOnly \
-XX:+AlwaysPreTouch \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=:./logs/gc \
-verbose:gc \
-XX:+PrintGCDetails \
-XX:+PrintGCDateStamps \
-XX:+PrintGCTimeStamps \
-Xloggc:./logs/gc/gc.log \
"

ENV PARAMS=""

COPY ./deepexi-dsc-belle-insight-provider/target/*.jar /home/app.jar

EXPOSE 80

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
RUN echo -e 'mkdir -p ./logs/gc && java $JAVA_OPTS -jar ./app.jar --spring.profiles.active=$PROFILE $PARAMS' > entrypoint.sh

ENTRYPOINT ["sh", "entrypoint.sh"]

二.使用

1.设置语言

image-20230725160949021

2.选择文件

image-20230725161130276

3.内存大小

image-20230725160842044

4.关键指标

image-20230725160856663

5.交互图标

image-20230725160908524

6.GC 统计

image-20230725160920930

7.GC 原因

image-20230725160938958

三.具体问题分析

1.Allocation Failure

“Allocation Failure” 是一种 Java Virtual Machine (JVM) 在进行垃圾回收(Garbage Collection,GC)时可能遇到的一种错误。它通常表示 JVM 在尝试为新的对象分配内存时,没有足够的可用内存空间。这个错误通常是由堆内存不足引起的,堆内存是用来存储对象实例的地方。

要解决 “Allocation Failure” 错误,你可以考虑以下几种方法:

  1. 增加堆内存大小:

    • 你可以通过调整 JVM 的堆内存参数来增加堆内存的大小,例如 -Xmx-Xms 参数。增加堆内存可以提供更多的可用内存空间,从而减少 “Allocation Failure” 的发生概率。但要注意不要过度增加堆内存,因为这可能导致长时间的垃圾回收暂停。
  2. 优化代码和对象的生命周期:

    • 通过检查应用程序的代码,确保没有不必要的对象创建和持有,以及避免内存泄漏。确保及时释放不再需要的对象引用。
  3. 使用更高效的垃圾回收器:

    • 根据应用程序的需求,选择适合的垃圾回收器。不同的垃圾回收器有不同的性能特性,可以通过参数配置来切换。
  4. 分析内存使用情况:

    • 使用工具如 VisualVM、JConsole 或类似的性能分析工具来监视应用程序的内存使用情况,以便确定哪些对象占用了大量内存,从而优化它们的管理。
  5. 使用内存分析工具:

    • 使用工具如 Eclipse Memory Analyzer 或 YourKit Profiler 来分析内存泄漏和不必要的对象创建。这些工具可以帮助你找出哪些对象占用了内存,并提供分析报告。
  6. 考虑使用压缩指针:

    • 压缩指针是一种技术,它可以减少对象引用的内存占用,从而提供更多的可用内存。你可以通过启用压缩指针相关的 JVM 选项来使用这个功能。

解决 “Allocation Failure” 错误通常需要深入分析应用程序的内存使用情况,并根据具体情况采取相应的措施。要选择哪种方法或采取哪种措施,需要根据应用程序的需求和性能特征来决定。

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 24
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kwan的解忧杂货铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值