`

JVM GC手工监控 .

    博客分类:
  • JVM
 
阅读更多
    JVM GC手工监控
一、GC监控
GC日志记录了内存使用和回收状态,出现内存故障时,可作为分析排查手段。

1. 启用GC监控的方法:增加java启动参数-verbose:gc,输出信息的样例:


  GC 135: total final references 4390; cleared final references 8.
GC 135: total phantom references 0; cleared phantom references 0.
GC 135: total old soft references 0; cleared old soft references 0.
GC 135: total JNI global weak references 0; cleared JNI global weak references 0.
GC 136: starting collection, maximum allocation reached.
GC 136: live objects 1081046; collected objects 6038; collected(KB) 558.
GC 136: queued for finalization 0; total soft references 113; cleared soft references 18.
GC 136: current heap(KB) 716784; current threshold(KB) 262144.
GC 136: collect (milliseconds) 1314.
GC 136: current cycle allocation(KB) 0; previous cycle allocation(KB) 532.
GC 136: total weak references 1321; cleared weak references 0.  2. 将GC日志输出到文件:不同JDK设置的参数不同,参考JDK官方文档
   SUN:-Xloggc:filename (例如:-Xloggc:D:/gc.log)
   IBM:-Xverbosegc:file=filename 或 -Xverbosegclog:filename
   HP :-Xverbosegc=filename  

3. 如何设置Java启动参数:有多种方式,以下各举一例
   Tomcat:在catalina.bat的“set JAVA_OPTS=%JAVA_OPTS% ”后设置
   WebLogic:在startWebLogic.cmd的“%JAVA_HOME%/bin/java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% ”后设置
   WebSphere:进入管理控制台,应用服务器->进程定义->Java虚拟机高级定义

4. GC日志的图形分析工具:HP的jtune




二、内存问题描述

典型现象是系统运行一段时间后,报OutOfMemoryError错误、页面非常慢、不响应或完全不再接受请求,而此时通过观察JVM内存,发现内存急剧上升到最大值并居高不下。

这种问题出现后,往往很棘手,通常是由于应用程序不合理造成的,而不合理程序或内存泄漏的源头可能并不明显。本人的一次经历是,经过十多天各种测试手段后,最后确定问题是由一处String累加引起的,改成StringBuffer就解决了,可见,忽略“小问题”往往会带来大麻烦。

三、分析手段

1. 分析GC日志、系统日志
2. 程序中设置监控断点
3. 尽可能重现故障并同时监控JVM内存,找出引起内存急剧上升的规律
4. 检查关键程序或频繁使用的工具类的合理性

四、解决手段

1. 主要从程序入手:降低内存使用量;字符串累加时以StringBuffer代替String;随时释放不再需要的对象;SQL优化及避免频繁取出大量数据;Session中不要放大的数据。。。
2. 据WebSphere和WebLogic官方建议:通常情况下JVM的Heap最小值和最大值可设成一样(根据实际情况调整),可取系统内存的25%-75%,保证JVM有合理足够的内存大小
3. 应用服务器的其他优化措施

五、应急措施

1. 不设定JVM的最大Heap上限
2. 程序中判断内存吃紧时执行Runtime.gc()强制垃圾收集,此方式比自动收集彻底,可一定程度上改善内存利用效率
3. 在不影响业务的情况下,定期重启应用服务器
  • 大小: 7.2 KB
分享到:
评论

相关推荐

    JVM GC垃圾回收.pdf

    JVM GC垃圾回收.pdf

    JVM GC原理深入学习.pdf

    本文档可以作为学习JVM GC的工具书所使用,对于想深入学习JVM GC原理的同学,这一本书就足够了。因为本文档是作者花费数月时间,查阅GC相关的国内外众多资料并加以思路清晰的条目化而形成。因为篇幅所限,可能有部分...

    使用Jconsole对java的内存使用情况(JVM)进行监控.doc

    《使用Jconsole对Java内存使用情况(JVM)进行监控》 Jconsole是Java开发工具包(JDK)1.5版本及更高版本提供的一款基于Java Management Extensions (JMX)的图形化管理工具,用于实时监控Java应用程序的性能和资源...

    JVM中文指令手册.pdf

    JVM(Java Virtual Machine,Java虚拟机)是运行所有Java程序的假想计算机,是Java程序的运行环境,负责执行指令、管理数据、内存、寄存器等,是实现Java跨平台特性的关键部分。JVM指令手册详细记录了JVM的所有操作...

    jvm调优实用工具.rar

    此外,JProfiler还提供了丰富的配置选项和可视化报告,使用户可以根据自己的需求定制监控指标,如CPU使用率、方法调用频率、GC频率等,以便更深入地理解应用的运行状况。同时,它支持远程连接,可以在不修改代码的...

    使用Jconsole对java的内存使用情况(JVM)进行监控.pdf

    标题中的“使用Jconsole对java的内存使用情况(JVM)进行监控”指的是通过Jconsole工具来监测Java应用程序的内存消耗和其他关键性能指标。Jconsole是一款由JDK 1.5及更高版本提供的基于JMX(Java Management ...

    Jvm1.8_GC.mmap

    GC:Gabage Collection,指JVM堆内存区域的垃圾回收 Minor GC:年轻代垃圾回收,所有的Majar GC都会触发进程暂停,只是这个实际很短 Major GC:也叫Full GC,年老代垃圾回收 年轻代和年老代的GC策略是不...

    (二)MATJVM 内存分析工具.MAT JVM 内存分析工具.MAT JVM 内存分析工具.

    4. **优化建议**:MAT会提供优化建议,如释放无用对象、调整GC参数等。 在MAT的插件`plugins2`中,可能包含了一些扩展功能或者与其他工具的集成,比如与其他IDE(如Eclipse)的集成,或者是对特定类型内存泄漏的...

    用于测试jvm gc调优-share-jvm-gc.zip

    3. **监控和诊断**:使用JDK自带的JConsole、VisualVM或者第三方工具如JProfiler、YourKit等,监控JVM的内存使用、GC频率和暂停时间,找出性能瓶颈。 4. **对象生命周期管理**:优化代码,避免创建过多短生命周期的...

    magic-script是一款基于JVM的脚本语言.zip

    magic-script是一款基于JVM的脚本语言.zipmagic-script是一款基于JVM的脚本语言.zipmagic-script是一款基于JVM的脚本语言.zipmagic-script是一款基于JVM的脚本语言.zipmagic-script是一款基于JVM的脚本语言.zip

    hpjmeter jvm gc监控工具

    【标题】"hpjmeter jvm gc监控工具"是一个专门用于监视Java虚拟机(JVM)内存管理和垃圾收集(GC)行为的实用程序。HPjmeter由惠普公司开发,它提供了一种可视化的方式来理解JVM性能,特别是与垃圾收集相关的活动。...

    带你全面理解JVM,掌握常规JVM调优-JVM.zip

    1. jconsole:图形化界面监控JVM的内存、线程、类加载等信息。 2. jmap:生成堆dump文件,用于分析内存泄漏。 3. jstack:打印线程堆栈信息,排查死锁等问题。 4. jinfo:查看和修改JVM配置。 5. jhat:分析heap ...

    JVM监控工具介绍.docx

    这些工具可以帮助开发者诊断内存泄漏、监控垃圾收集(GC)活动、查看线程状态以及检查JVM配置。以下是几种常用的JVM监控工具的详细介绍: 1. **jstack**: `jstack` 是一个用于打印Java线程堆栈跟踪的工具,它可以...

    jvm虚拟机学习资料.zip

    4. **GC算法与种类** (4.GC算法与种类.pptx) 垃圾收集(Garbage Collection, GC)是JVM自动管理内存的重要机制。了解各种GC算法,如标记-清除、复制、标记-整理、分代收集等,以及它们的特点和适用场景,是性能调优...

    深入理解JVM & G1 GC.rar

    G1 GC提出了不确定性Region,每个空闲Region不是为某个固定年代准备的,它是灵活的,需求驱动的,所以G1 GC代表了先进性。本书主要为学习Java语言的学生、初级程序员提供GC的使用参考建议及经验,着重介绍了G1 GC ...

    JVM-内存结构.pptx

    自己在公司做分享时做的培训文档,包括了jvm的内存结构以及每个内存结构的一些说明,仅供公司内部培训用,不做其他商业用途。

    JVM调优工具命令详解.pdf

    本篇文档详细介绍了JVM调优工具的命令使用及其相关知识点,涵盖了内存信息分析、死锁检测、JMX远程监控等方面的命令行工具的使用方法。 首先,文档提到了JPS命令,它用于查看当前运行的Java进程信息,并返回进程ID...

    面试总结-JVM .png

    JVM 的运行机制 多线程 JVM 的内存区域 JVM 会创建操作系统的接口创建一个原生线程。JVM 线程和操作系统线程是一一对应的

    jvmgc过程介绍

    jvmgc过程介绍(jpg)

Global site tag (gtag.js) - Google Analytics