💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
- 推荐:kuan 的首页,持续学习,不断总结,共同进步,活到老学到老
- 导航
- 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
- 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
- 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
- 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
- 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
博客目录
- 一.介绍
- 1.官网地址
- 2.简单介绍
- 3.功能特性
- 4.生成 gc 日志
- 5.服务器 gc 日志
- 二.使用
- 1.设置语言
- 2.选择文件
- 3.内存大小
- 4.关键指标
- 5.交互图标
- 6.GC 统计
- 7.GC 原因
- 三.具体问题分析
- 1.Allocation Failure
一.介绍
1.官网地址
2.简单介绍
GCeasy 是一个基于 Web 的垃圾回收日志分析工具,可以用于分析 JVM 的垃圾回收日志,提供可视化的分析结果和建议。GCeasy 可以分析所有主流的垃圾回收器,包括 CMS、G1、Parallel 和 Serial 等,支持多种垃圾回收日志格式,包括 GC log、Jstat log 和 JMX 等。
使用 GCeasy 可以帮助开发人员和运维人员快速定位 JVM 垃圾回收问题,包括内存泄漏、频繁 Full GC、停顿时间过长等常见问题。GCeasy 提供的分析结果包括垃圾回收统计信息、内存使用情况、各代空间使用情况、各代垃圾回收次数和停顿时间、垃圾回收器配置信息等。此外,GCeasy 还提供了一些优化建议,帮助用户优化 JVM 的垃圾回收性能。
GCeasy 的使用非常简单,只需要将垃圾回收日志文件上传到网站上即可,无需安装任何软件。GCeasy 还提供了免费和付费两个版本,免费版本可以分析大部分常见的垃圾回收日志,付费版本则支持更多的功能和更大规模的日志分析。
3.功能特性
4.生成 gc 日志
在 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.设置语言
2.选择文件
3.内存大小
4.关键指标
5.交互图标
6.GC 统计
7.GC 原因
三.具体问题分析
1.Allocation Failure
“Allocation Failure” 是一种 Java Virtual Machine (JVM) 在进行垃圾回收(Garbage Collection,GC)时可能遇到的一种错误。它通常表示 JVM 在尝试为新的对象分配内存时,没有足够的可用内存空间。这个错误通常是由堆内存不足引起的,堆内存是用来存储对象实例的地方。
要解决 “Allocation Failure” 错误,你可以考虑以下几种方法:
- 增加堆内存大小:
- 你可以通过调整 JVM 的堆内存参数来增加堆内存的大小,例如
-Xmx
和-Xms
参数。增加堆内存可以提供更多的可用内存空间,从而减少 “Allocation Failure” 的发生概率。但要注意不要过度增加堆内存,因为这可能导致长时间的垃圾回收暂停。
- 优化代码和对象的生命周期:
- 通过检查应用程序的代码,确保没有不必要的对象创建和持有,以及避免内存泄漏。确保及时释放不再需要的对象引用。
- 使用更高效的垃圾回收器:
- 根据应用程序的需求,选择适合的垃圾回收器。不同的垃圾回收器有不同的性能特性,可以通过参数配置来切换。
- 分析内存使用情况:
- 使用工具如 VisualVM、JConsole 或类似的性能分析工具来监视应用程序的内存使用情况,以便确定哪些对象占用了大量内存,从而优化它们的管理。
- 使用内存分析工具:
- 使用工具如 Eclipse Memory Analyzer 或 YourKit Profiler 来分析内存泄漏和不必要的对象创建。这些工具可以帮助你找出哪些对象占用了内存,并提供分析报告。
- 考虑使用压缩指针:
- 压缩指针是一种技术,它可以减少对象引用的内存占用,从而提供更多的可用内存。你可以通过启用压缩指针相关的 JVM 选项来使用这个功能。
解决 “Allocation Failure” 错误通常需要深入分析应用程序的内存使用情况,并根据具体情况采取相应的措施。要选择哪种方法或采取哪种措施,需要根据应用程序的需求和性能特征来决定。
觉得有用的话点个赞
👍🏻
呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙