zoukankan      html  css  js  c++  java
  • 深入理解java虚拟机---虚拟机工具jinfo(十五)

    作用: 实时查看和调整虚拟机参数.

    jinfo 是jdk自带的一个工具,它可以用来查看正在运行的java应用程序的扩展参数(JVM中-X标示的参数);甚至支持在运行时修改部分参数。

    1、通过以下的命令你便能看到JVM中哪些flag可以被jinfo动态修改:

    [html] view plain copy
     
    1. # java -XX:+PrintFlagsFinal -version|grep manageable  
    2.      intx CMSAbortablePrecleanWaitMillis            = 100             {manageable}          
    3.      intx CMSWaitDuration                           = 2000            {manageable}          
    4.      bool HeapDumpAfterFullGC                       = false           {manageable}          
    5.      bool HeapDumpBeforeFullGC                      = false           {manageable}          
    6.      bool HeapDumpOnOutOfMemoryError                = false           {manageable}          
    7.     ccstr HeapDumpPath                              =                 {manageable}          
    8.     uintx MaxHeapFreeRatio                          = 100             {manageable}          
    9.     uintx MinHeapFreeRatio                          = 0               {manageable}          
    10.      bool PrintClassHistogram                       = false           {manageable}          
    11.      bool PrintClassHistogramAfterFullGC            = false           {manageable}          
    12.      bool PrintClassHistogramBeforeFullGC           = false           {manageable}          
    13.      bool PrintConcurrentLocks                      = false           {manageable}          
    14.      bool PrintGC                                   = false           {manageable}          
    15.      bool PrintGCDateStamps                         = false           {manageable}          
    16.      bool PrintGCDetails                            = false           {manageable}          
    17.      bool PrintGCTimeStamps                         = false           {manageable}          
    18. java version "1.7.0_79"  
    19. Java(TM) SE Runtime Environment (build 1.7.0_79-b15)  
    20. Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)  

    通过选项-XX:+PrintFlagsFinal可以列出所有的JVM flag,而其中的标注为manageable 的flag则是值得我们关注的部分。这些flag可通过JDK management interface(-XX:+PrintFlagsFinal)动态修改。

    用法总结:

    简介

    jinfo是jdk自带的命令,可以用来查看正在运行的Java应用程序的扩展参数,甚至支持在运行时,修改部分参数。

    通常会先使用jps查看java进程的id,然后使用jinfo查看指定pid的jvm信息.

    jps   #通过jps来查看当前运行状态的虚拟机进程

    查看jvm的参数

    1
    jinfo -flags process_id

    查看java系统参数

    1
    jinfo -sysprops process_id

    虚拟机的这些参数可以通过下面的命令查看:

    1
    java -XX:+PrintFlagsFinal -version | grep manageable

    除了通过启动脚本可以设置参数,PrintGC默认是打开的,因此我们只需要打开PrintGCDetails参数。

    1
    2
    jinfo -flag +PrintGC 27250
    jinfo -flag +PrintGCDetails 27250

    如果需要关闭GC日志的打印,使用下面的命令:

    1
    2
    jinfo -flag -PrintGC 27250
    jinfo -flag -PrintGCDetails 27250 

    查看是否开启了GC日志的打印:

    1
    2
    jinfo -flag PrintGC 27250
    jinfo -flag PrintGCDetails 27250  

    常用JVM参数

    1
    2
    3
    4
    5
    6
    7
    -Xms:初始堆大小,默认为物理内存的1/64(<1GB);默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制
    -Xmx:最大堆大小,默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制
    -Xmn:新生代的内存空间大小,注意:此处的大小是(eden+ 2 survivor space)。与jmap -heap中显示的New gen是不同的。整个堆大小=新生代大小 + 老生代大小 + 永久代大小。在保证堆大小不变的情况下,增大新生代后,将会减小老生代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
    -XX:SurvivorRatio:新生代中Eden区域与Survivor区域的容量比值,默认值为8。两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10。
    -Xss:每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。应根据应用的线程所需内存大小进行适当调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。一般小的应用, 如果栈不是很深, 应该是128k够用的,大的应用建议使用256k。这个选项对性能影响比较大,需要严格的测试。和threadstacksize选项解释很类似,官方文档似乎没有解释,在论坛中有这样一句话:"-Xss is translated in a VM flag named ThreadStackSize”一般设置这个值就可以了。
    -XX:PermSize:设置永久代(perm gen)初始值。默认值为物理内存的1/64。
    -XX:MaxPermSize:设置持久代最大值。物理内存的1/4。
  • 相关阅读:
    解决Uploadify 3.2上传控件加载导致的GET 404 Not Found问题
    Intellij idea的Dependencies波浪线
    Web.xml配置详解之context-param
    The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path(Myeclipse添加Server Library)
    html5 video mp4播放不了问题
    切片优化小拾
    解决video标签的兼容性
    css module.css demo
    Gnet 响应式官网开发总结
    前端小总结
  • 原文地址:https://www.cnblogs.com/zhulibin2012/p/8997280.html
Copyright © 2011-2022 走看看