zoukankan      html  css  js  c++  java
  • 常用JVM配置参数

    Trace跟踪参数

     -verbose:gc

     -XX:+printGC

     -XX:+PrintGCDetails

     -XX:+PrintGCTimeStamps

     -Xloggc:log/gc.log // 指定GC log的位置,以文件输出

     -XX:PrintHeapAtGC // 每一次GC后,都打印堆信息

    // 类加载信息 

    -XX:TraceClassLoading

       

    -XX:+PrintClassHistogram

     -Ctrl +Break  打印类信息, 类的使用情况

    堆的分配参数

    -Xmx  -Xms

     - 指定最大堆 和最大堆

       System.out.print("Xmx");

       System.out.println(Runtime.getRuntime().maxMemory()/1024.0/2014+"M");

       

    内存分配

    -Xmn 

     -设置新生代大小

     -XX:NewRatio

     - 新生代(eden +2*s) 和老年代(不含永久区)的比值

     -4 表示新生代:老年代=1:4 ,即年轻代占堆的1/5

    -XX:SurvivorRatio 

     - 设置两个SurvivorRatio  区和eden 的比

     -8 表示 两个Survivor:eden =2:8,即一个Survivor 占年轻代的1/10

    -XX: +HeapDumpOnOutOfMemoryError

         - OOM时导出堆到文件

    -XX:+HeapDumpPath

         - 导出OOM的路径

    -Xmx20m -Xms5m -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/a.dump

     -Vector v = new Vector();

     for(int i=0;i<25;i++){

      v.add(new byte[1*1024*1024]);

    } // 模拟OOM

    -XX:OnOutOfMemoryError

    -在OOM时执行一个脚本

    - "-XX:OnOutOfMemoryError=D:/tools/jdk1.7_40/bin/printstack.bat %p"

    -当程序OOM时,在D:/a.txt中将会生成线程的dump

    -可以在OOM时,发送邮件,甚至是重启程序

    永久区分配参数

    -XX:PermSize -XX:MaxPermSize

    - 设置永久区的初始空间和最大空间

    -他们表示,一个系统可以容纳多少个类型

    使用CGLIG等库的时候,可能会产生大量的类,这些类,有可能会撑爆永久区导致OOM

    for(int i=0;i<100000;i++){

      CglibBean bean = new CglibBean("geym.jvm.ch3.perm.bean",new HashMap());

    }

    如果堆空间没有用完也抛出了OOM,有可能是永久区导致的

    栈大小分配

    -Xss  

        通常只有 几百K

        决定了函数调用的深度

        每个线程都有独立的栈空间

        局部变量,参数,分配在栈上

        每个线程私有的区域,线程数*栈空间 =所有线程占的空间, 如果想让系统跑更多的线程,则需要把栈大小设置小一点。

  • 相关阅读:
    博客搬家了
    Unity Shader学习笔记(一)坐标变换
    cs106a编程方法学作业解答(4)(Hangman)
    cs106a编程方法学 作业解答(4)
    cs106a编程方法学作业解答(3)
    暗黑破坏神2修改盒子公式的方法
    cs106a编程方法学作业解答(2)
    cs106a编程方法学作业解答 (1)
    MAC入手达成
    深圳面试一周记录——.NET(B/S)开发
  • 原文地址:https://www.cnblogs.com/wind90/p/5457235.html
Copyright © 2011-2022 走看看