`

JVM 使用参数

    博客分类:
  • JVM
JVM 
阅读更多

    一般情况下,我们默认安装的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参数

    ### JVM参数配置详解 #### 一、理解JVM参数配置的重要性 Java Virtual Machine (JVM) 是运行Java程序的核心环境,其性能优化很大程度上依赖于正确的JVM参数配置。合理配置JVM参数不仅可以显著提升应用程序的运行...

    jvm优化参数配置

    以下是对JVM参数优化的详细解释: 1. **内存配置**: - **堆内存(Heap Memory)**:分为新生代(Young Generation)和老年代(Old Generation)。新生代主要存储新创建的对象,老年代存储存活时间较长的对象。...

    jvm参数设置_JVM参数设置_

    以上只是一部分常见的JVM参数,实际使用中还需要根据应用特性、硬件配置及性能需求进行调整。在进行JVM调优时,通常需要结合监控工具(如VisualVM或JProfiler)观察应用运行状态,以找出性能瓶颈并进行针对性优化。...

    jvm内存参数调优

    ### JVM内存参数调优详解 #### 一、概述 Java虚拟机(JVM)是执行Java字节码的软件环境,为了提高Java程序的性能和稳定性,合理调整JVM的内存参数至关重要。根据Java启动参数的不同分类,我们可以将其分为标准参数...

    jvm启动参数大全

    在开发和调优Java应用时,了解和使用JVM启动参数至关重要。这些参数可以调整JVM的行为,优化内存分配、垃圾收集、线程设置等。以下是一些常见的JVM启动参数及其详细解释: 1. **-Xms和-Xmx**: 这两个参数用于设置...

    JAVA应用JVM原理及参数调优深入讲解视频.zip

    JAVA应用JVM原理及参数调优深入讲解视频.1 JAVA应用JVM原理及参数调优深入讲解视频.2 JAVA应用JVM原理及参数调优深入讲解视频.3 JAVA应用JVM原理及参数调优深入讲解视频.4 JAVA应用JVM原理及参数调优深入讲解视频.5 ...

    jdk8 jvm 参数图(随手参考好资料)

    常用jvm参数都在这张图中,参考起来方便,是国外大神整理的

    JVM内存参数详解以及配置调优

    JVM 内存参数详解以及配置调优 JVM 内存参数是 Java 虚拟机中最重要的参数之一,它直接影响着 Java 应用程序的性能和稳定性。在这个资源中,我们将详细讨论 JVM 内存参数的配置和调优,包括 JVM 的结构、内存管理、...

    常用JVM配置参数.ppt

    ### 常用JVM配置参数详解 #### 一、概述 Java虚拟机(JVM)是运行Java程序的核心环境,其性能的优劣直接影响到Java应用程序的执行效率...在实际应用中,建议根据具体的应用场景灵活调整JVM参数,以达到最佳的运行效果。

    tomcat6.0 修改启动内存设置 java jvm参数配置

    ### Tomcat 6.0 修改启动内存设置及 Java JVM 参数配置详解 #### 一、背景与目的 在部署和运行 Java Web 应用时,合理地配置应用服务器(如 Apache Tomcat)的内存是非常重要的。这不仅可以提升应用程序的性能,还...

    tomcat7安装使用及jvm连接数参数调优

    Tomcat7 安装使用及 JVM 连接数参数调优 Tomcat7 是一个流行的 Java Web 服务器,主要用于部署和管理基于 Java 的 Web 应用程序。为了确保 Tomcat7 的稳定运行和高效性能,需要对其进行合理的安装、配置和优化。...

    JVM优化3(Tomcat参数调优,JVM参数调优,jvm字节码,代码优化).pdf

    本篇文件内容主要介绍了JVM优化的第三部分,重点围绕Tomcat参数调优、JVM参数调优、JVM字节码优化以及代码优化等几个方面。下面是针对这些知识点的详细解释: 1. Tomcat参数调优 在Tomcat参数调优部分,首先介绍了...

    深入JVM内核—原理、诊断与优化视频教程-3.常用JVM配置参数

    通过JVM提供的各种工具,如JConsole、VisualVM、JProfiler等,可以监控和分析应用的内存使用、线程状态、CPU消耗等指标,从而发现潜在的性能瓶颈。此外,JDK自带的JMX(Java Management Extensions)和JVM命令行工具...

    jvm 参数及gc详解

    通过合理配置JVM参数,我们可以有效控制内存使用,优化程序性能,并减少垃圾收集带来的负面影响。同时,根据应用特性选择合适的垃圾收集策略,能进一步提高系统的响应速度和稳定性。阅读“java hotspot vm options....

    Tomcat JVM的参数调优

    完全垃圾收集应在3-5秒内完成,如果超过这个时间,可能需要调整JVM参数或考虑使用不同的垃圾收集器策略。 最后,为了提高效率,推荐缩小最大内存和最小内存之间的差距,以减少内存碎片并提高利用率。同时,增加...

    简单实用JVM参数配置

    通过上述JVM参数的精细调整,可以有效地优化Java应用的内存使用,减少`OutOfMemoryError`的发生,提升系统的稳定性和性能。在实践中,应结合监控工具持续观察和分析JVM的运行状态,以便及时发现问题并做出相应的优化...

    jvm1.6参数详解

    jvm1.6参数详解

    Java6 JVM命令行参数

    本篇文章将深入探讨部分重要的JVM命令行参数,并给出具体的使用场景和解释。 #### 命令行参数格式 - **启用特定选项**:`-XX:+&lt;option&gt;`,例如`-XX:+UseParallelGC`。 - **禁用特定选项**:`-XX:-&lt;option&gt;`,例如`-...

Global site tag (gtag.js) - Google Analytics