一般情况下,我们默认安装的JDK在运行一个java程序理想状态下是不会出现OOM等问题的。所以我没必要去配置一些JVM参数。但是当我们遇到OOM等一些性能问题时,配置JVM参数就成了我们制胜的法宝。
最为大家熟知的想必就是-Xms与-Xmx(-XX:InitialHeadSize/-XX:MaxHeapSize)这俩个设置堆的初始和最大大小的参数。当然我们大多数时候我们为了避免每次垃圾回收之后jvm重新分配内存我们会将这俩个的值设置成一样的。
eg. java -Xms3g -Xmx3g -Xmn2g -Xss128k -XX:MaxPermSize=256m -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxTenuringThreshold=0 -verbose:gc -Xloggc:gc.log
-Xms3g 设置jvm初始内存为3g
-Xmx3g 设置jvm最大内存为3g
-Xmn2g设置年轻代内存为1g
-Xss128k设置每个线程分配的栈大小为128k
-XX:MaxPermSize=256m设置永久代最大大小为256m
-XX:NewRatio=4 设置年轻代(包括Eden区和两个Survivor区)与年老代(除去永久代)的比值。这里设置为4,表示年轻代与年老代的比值为1:4,则年轻代占年轻代和年老代的1/5.
-XX:SurvivorRatio=4 设置Eden区和Survivor区的比值。这里设置为4.表示Eden区与Survivor区(注意这里有俩个Survivor区)的比为4:2,Survivor区占整个年轻代的1/6.
-XX:MaxTenuringThreshold=0设置垃圾收集最大年龄。如果设置为0的话,对象在年轻代不经过Survivor区直接进入年老代。如果将这个值设置较大,将会增加对象在年轻代的停留时间,对象将会在Survivor区进行多次复制才能进入老年代。
-verbose:gc:设置显示垃圾收集信息
-Xloggc:gc.log:指定垃圾收集日志文件
堆内存快照:解决各种OOM的良药
假如我们将-Xmx设置成一个合适的值,那么我们将面对OOM的风险,而如果这个OOM发生在应用运行后几个礼拜才出现,那么就给我调试发现问题带来了不少的难度。幸运的是,如果在发生OOM时我们生成保留了Heap Dump,那么对与我们分析问题就事半功倍了。我们可以设置-XX:+HeapDumpOnOutOfMemoryError让jvm发生内存溢出时自动生成堆内存快照。默认这个对内存快照会保存在JVM启动目录下名为:java_pid<pid>.hprof的文件里(这里的<pid>就是JVM进程的进程号)。当然我们也可以通过设置-XX:HeapDumpPath=<path>来改变默认的堆内存快照存放的路径,这个<path>可以使绝对路径也可以是相对路径。
-XX:OnOutOfMemoryError当内存发生溢出时我们可以执行一些指令或做一些相应的处理。
eg:java -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/headdump.hprof
-XX:OnOutOfMemoryError="sh ~/operate.sh" HelloWorld
待补充... ...
相关推荐
### JVM参数配置详解 #### 一、理解JVM参数配置的重要性 Java Virtual Machine (JVM) 是运行Java程序的核心环境,其性能优化很大程度上依赖于正确的JVM参数配置。合理配置JVM参数不仅可以显著提升应用程序的运行...
以上只是一部分常见的JVM参数,实际使用中还需要根据应用特性、硬件配置及性能需求进行调整。在进行JVM调优时,通常需要结合监控工具(如VisualVM或JProfiler)观察应用运行状态,以找出性能瓶颈并进行针对性优化。...
### JVM内存参数调优详解 #### 一、概述 Java虚拟机(JVM)是执行Java字节码的软件环境,为了提高Java程序的性能和稳定性,合理调整JVM的内存参数至关重要。根据Java启动参数的不同分类,我们可以将其分为标准参数...
在开发和调优Java应用时,了解和使用JVM启动参数至关重要。这些参数可以调整JVM的行为,优化内存分配、垃圾收集、线程设置等。以下是一些常见的JVM启动参数及其详细解释: 1. **-Xms和-Xmx**: 这两个参数用于设置...
JAVA应用JVM原理及参数调优深入讲解视频.1 JAVA应用JVM原理及参数调优深入讲解视频.2 JAVA应用JVM原理及参数调优深入讲解视频.3 JAVA应用JVM原理及参数调优深入讲解视频.4 JAVA应用JVM原理及参数调优深入讲解视频.5 ...
常用jvm参数都在这张图中,参考起来方便,是国外大神整理的
JVM 内存参数详解以及配置调优 JVM 内存参数是 Java 虚拟机中最重要的参数之一,它直接影响着 Java 应用程序的性能和稳定性。在这个资源中,我们将详细讨论 JVM 内存参数的配置和调优,包括 JVM 的结构、内存管理、...
### 常用JVM配置参数详解 #### 一、概述 Java虚拟机(JVM)是运行Java程序的核心环境,其性能的优劣直接影响到Java应用程序的执行效率...在实际应用中,建议根据具体的应用场景灵活调整JVM参数,以达到最佳的运行效果。
### Tomcat 6.0 修改启动内存设置及 Java JVM 参数配置详解 #### 一、背景与目的 在部署和运行 Java Web 应用时,合理地配置应用服务器(如 Apache Tomcat)的内存是非常重要的。这不仅可以提升应用程序的性能,还...
Tomcat7 安装使用及 JVM 连接数参数调优 Tomcat7 是一个流行的 Java Web 服务器,主要用于部署和管理基于 Java 的 Web 应用程序。为了确保 Tomcat7 的稳定运行和高效性能,需要对其进行合理的安装、配置和优化。...
本篇文件内容主要介绍了JVM优化的第三部分,重点围绕Tomcat参数调优、JVM参数调优、JVM字节码优化以及代码优化等几个方面。下面是针对这些知识点的详细解释: 1. Tomcat参数调优 在Tomcat参数调优部分,首先介绍了...
通过JVM提供的各种工具,如JConsole、VisualVM、JProfiler等,可以监控和分析应用的内存使用、线程状态、CPU消耗等指标,从而发现潜在的性能瓶颈。此外,JDK自带的JMX(Java Management Extensions)和JVM命令行工具...
通过合理配置JVM参数,我们可以有效控制内存使用,优化程序性能,并减少垃圾收集带来的负面影响。同时,根据应用特性选择合适的垃圾收集策略,能进一步提高系统的响应速度和稳定性。阅读“java hotspot vm options....
完全垃圾收集应在3-5秒内完成,如果超过这个时间,可能需要调整JVM参数或考虑使用不同的垃圾收集器策略。 最后,为了提高效率,推荐缩小最大内存和最小内存之间的差距,以减少内存碎片并提高利用率。同时,增加...
通过上述JVM参数的精细调整,可以有效地优化Java应用的内存使用,减少`OutOfMemoryError`的发生,提升系统的稳定性和性能。在实践中,应结合监控工具持续观察和分析JVM的运行状态,以便及时发现问题并做出相应的优化...
jvm1.6参数详解
JVM参数调优是优化Java应用程序性能的关键环节,尤其是在服务器端的应用中,如Web服务器Resin。本实践案例中,作者分别尝试了三种不同的垃圾回收(GC)策略:串行回收、并行回收和并发回收,并针对每种策略提供了...