在JVM出现内存溢出或泄露时,为便于排查和定位,需要JVM的启动上增加相应的参数。主要是GC日志和内存DUMP参数。详细如下。
1.GC日志和内存DUMP参数配置
本文参数配置基于各厂商的JDK 6.0版本,低版本或高版本的参数有可能不同。各厂商JVM GC日志和内存DUMP参数配置如下:
(1)Oracle JVM
-Xloggc:${目录}/managed1_gc.log
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=${目录}
(2)HP JVM
-Xverbosegc:file=${目录}/mananged1_gc.log
-XX:+HeapDumpOnOutOfMemoryError -XX:+HeapDumpOnCtrlBreak
-XX:HeapDumpPath=${目录}
(3)IBM JVM
-XverboseGClog: ${目录}/mananged1_gc.log
-Xdump:heap:events=user,file=${目录}/pid%uid%pid.phd
2.GC日志参数说明
2.1.Oracle JVM
1、配置方法
在JAVA_OPTIONS变量中增加 -Xloggc:${目录}/managed1_gc.log。
2、参数说明
(1)在集群环境下,建议按照节点名命名GC日志文件,例如节点1的名称为managed1,则日志文件命名为managed1_gc.log。
(2)备注:如果只有-verbose:gc参数,gc日志会输出到控制台上,如果-verbose:gc和-Xloggc:filename参数共存,以-Xloggc为准。-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps 可以增加,但是增加后产生的gc日志用HPjemeter工具不能识别,其中-XX:+PrintGC参数和单独的-verbose:gc或者单独的-Xloggc的输出是一样的,都是简要信息。
2.2.HP JVM
1、配置方法
在JAVA_OPTIONS变量中增加 -Xverbosegc:file=${目录}/mananged1_gc.log。
2、参数说明
(1)在集群环境下,建议按照节点名命名GC日志文件,例如节点1的名称为managed1,则日志文件命名为managed1_gc.log。
(2)HP JVM的GC日志文件生成时会自动增加进程号(PID),例如:managed1_gc.log.2252,其中2252为Java进程ID。
2.3.IBM JVM
1、配置方法
在JAVA_OPTIONS变量中增加 -XverboseGClog:${目录}/mananged1_gc.log。
2、参数说明
在集群环境下,建议按照节点名命名GC日志文件,例如节点1的名称为managed1,则日志文件命名为managed1_gc.log。
3.内存DUMP参数说明
3.1.Oracle JVM
1、配置方法
在JAVA_OPTIONS变量中增加
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${目录}。
2、参数说明
(1)-XX:+HeapDumpOnOutOfMemoryError参数表示当JVM发生OOM时,自动生成DUMP文件。
(2)-XX:HeapDumpPath=${目录}参数表示生成DUMP文件的路径,也可以指定文件名称,例如:-XX:HeapDumpPath=${目录}/java_heapdump.hprof。如果不指定文件名,默认为:java_<pid>_<date>_<time>_heapDump.hprof。
(3)Oracle JVM的6.0版本去掉了-XX:+HeapDumpOnCtrlBreak参数,如果需要产生DUMP文件,请采用jmap命令,命令行格式如下:
jmap -dump:format=b,file=managed1_heapdump.hprof <pid>
其中managed1_heapdump.hprof表示生成的DUMP文件名称,pid表示Java进程号。
3.2.HP JVM
1、配置方法
在JAVA_OPTIONS变量中增加
-XX:+HeapDumpOnOutOfMemoryError -XX:+HeapDumpOnCtrlBreak
-XX:HeapDumpPath=${目录}。
2、参数说明
(1)-XX:+HeapDumpOnOutOfMemoryError参数表示当JVM发生OOM时,自动生成DUMP文件。
(2)-XX:HeapDumpPath=${目录}参数表示生成DUMP文件的路径,也可以指定文件名称,如果不指定文件名,默认文件示例如下:java_pid2821.hprof.1313372696928,其中2821为Java进程号,1313372696928为自动生成的数字。
(3)-XX:+HeapDumpOnCtrlBreak参数表示可以通过kill -3 <pid>根据需要产生DUMP文件。
3.3.IBM JVM
1、配置方法
在JAVA_OPTIONS变量中增加
-Xdump:heap:events=user,file=${目录}/pid%uid%pid.phd。
2、参数说明
(1)-Xdump:heap:events=user,file=${目录}/pid%uid%pid.phd表示可以根据需要通过kill -3 <pid>产生DUMP文件,%uid和%pid为变量。生成的文件名称示例:pidtestuser303118.phd,其中testuser为uid,303118为pid;IBM JVM采用kill -3同时会生成另外一个javacore文件,文件示例:javacore.20110815.173356.303118.0002.txt。
(2)IBM JVM当发生OOM时会自动生成DUMP文件,无需额外的参数配置。
分享到:
相关推荐
5. **解读和优化**:根据分析结果调整JVM参数、优化代码、修复内存泄漏等问题,然后重新测试以验证改进效果。 总的来说,HeadAnalyzer 4.1.4是WebSphere环境下Java性能调优的重要工具,通过深入解析dump文件,它能...
首先,JProfiler11是一款专业级别的Java性能分析工具,它能够对JVM进行深入的内存和CPU分析。通过集成到Idea中,开发者可以直接在IDE内部进行性能检测,无需离开熟悉的开发环境。只需下载JProfiler11的安装包,并...
总之,WebLogic内存调优涉及到JVM内存各个区域的合理配置,需要根据应用程序的特性和负载情况进行调整。合理的内存分配可以避免频繁的垃圾收集,提高系统的响应速度,并确保服务的稳定性。在实践过程中,应监控内存...
此外,监控线程Dump和Apache日志可以帮助诊断内存问题,找出内存消耗大的程序并进行优化。 总的来说,理解JVM内存模型和垃圾回收机制对于优化Java应用性能至关重要,它涉及到内存分配策略、垃圾收集算法的选择以及...
- **jstat**:命令行工具,用于收集JVM的统计信息,包括GC、类装载、内存和编译器的数据。 - **jinfo**:提供配置信息,如JVM参数,可以实时修改某些非安全的运行时参数。 - **jmap**:用于生成堆内存映射或dump...
本文将深入探讨JVM参数配置的相关知识点。 1. **JVM内存配置**: JVM内存分为几个主要区域,包括堆内存(Heap)、年轻代(Young Generation)、老年代(Tenured Generation)、方法区(Method Area)和本地方法栈...
6. -XX:+PrintFlagsFinal:查看所有默认和已设置的JVM参数值,便于了解当前配置。 三、调试技巧 1. 使用-XX:+HeapDumpOnOutOfMemoryError参数,当发生OOM时自动生成堆转储文件,以便分析内存泄漏。 2. 异常日志...
4. **优化配置**:根据应用实际情况,合理调整JVM参数,如增大堆内存、调整GC策略等。 #### 六、使用分析工具解决内存不足和内存泄漏错误 在实践中,借助专业的分析工具是非常必要的。例如: - **MAT(Memory ...
- **合理配置JVM参数**:根据应用程序的实际需求合理设置堆内存和其他内存区域的大小。 - **定期进行代码审查**:查找潜在的内存泄漏源。 - **使用工具辅助检测**:定期使用内存分析工具检查应用的内存使用情况。 #...
Java虚拟机(JVM)是Java程序运行的基础,它的参数配置对于优化应用程序的性能至关重要。以下是对JVM参数配置的详细说明: 1. **堆内存配置**: - `-Xms`:设置JVM启动时分配的初始堆内存大小。 - `-Xmx`:设置...
4. **GC问题**:通过`jstat`监控GC的频率和耗时,使用`GCViewer`等工具分析GC日志,判断是否存在频繁的Full GC等问题。 5. **业务逻辑错误**:仔细审查业务日志,关注异常堆栈和错误信息,结合业务流程和上下游关系...
IBM JVM提供了丰富的GC选项和策略,可以通过调整这些参数来优化内存管理,避免内存耗尽。 IBM提供的这个内存分析工具包含了以下组件: 1. `ha.log.0`:这可能是一个日志文件,记录了JVM运行时的详细信息,包括GC...
日志文件的格式通常为`-XX:+PrintGCDetails`或`-XX:+PrintGCDateStamps`等JVM参数配置下的输出。 在界面中,GCViewer会展示一个时间轴,其中每个GC事件都会以波形的形式显示。通过颜色区分,你可以直观地看出不同...
1. **JDK Mission Control (JMC)**:这是一个强大的JVM监控和分析工具,它可以打开并分析heap dump文件,提供内存泄漏探测器、线程分析等功能。通过JMC,你可以找到内存消耗最大的对象类别,追踪对象的生存路径,...
这可能是一个文档或日志,详细记录了JVM的配置参数和运行时信息。通过分析这个文件,开发者可以了解JVM的启动选项设置,包括堆大小、垃圾收集器类型、编译器策略等,从而调整以适应特定应用的需求。 4. **Memory ...
以上介绍的各种JVM工具和参数对于Java开发人员来说是非常重要的,它们能够帮助我们更好地理解和管理JVM的行为,从而提高应用程序的性能和稳定性。在实际应用中,根据具体情况选择合适的工具和参数进行配置和调优是...
7. **异常处理与日志**:配置当出现OOM(Out Of Memory)时生成内存dump文件和GC日志,便于后期分析问题原因。 通过上述方法,我们可以构建出一个更适应业务需求的JVM运行模型,优化内存利用率,降低GC频率,提高...
- **常见OOM分析**:OOM (Out Of Memory) 是常见的内存问题之一,通过分析堆转储文件和GC日志,可以定位问题原因。 - **dump分析工具**:如JProfilere、Eclipse Memory Analyzer等工具可以帮助开发者分析堆转储文件...
此外,还需要了解 Java 应用程序的运行环境和配置,包括操作系统、 JVM 参数、应用程序的配置等。 JVM 调优的步骤 JVM 调优的步骤可以分为以下几个步骤: 1. 根据需求进行 JVM 规划和预调优:在开始 JVM 调优之前...
例如,`-Xms2048m -Xmx2048m`设置了JVM的最小和最大堆内存为2GB,`-Xmn512m`指定了新生代的大小为512MB,`-XX:MaxPermSize=256m`设定了永久代的最大值为256MB,而`-Xss128k`则表示每个线程的栈空间大小为128KB。...