zoukankan      html  css  js  c++  java
  • JDK7与8内存参数解析与修改

     

    JDK内存

    jdk内存实际是jvm内存,jvm有一个运行时数据区,其实就是对这一部分的大小分配。

    运行时数据区通常包括这几个部分:程序计数器(Program Counter Register)、Java栈(VM Stack)、本地方法栈(Native Method Stack)、方法区(Method Area)、堆(Heap)

    • Xss:每个线程的stack大小(栈)
    • Xmx:JAVA HEAP的最大值、默认为物理内存的1/4
    • Xms:JAVA HEAP的初始值,server端最好Xms与Xmx一样
    • Xmn:JAVA HEAP young区的大小(相当于对-XX:newSize、-XX:MaxnewSize同时设置)
    • XX:PermSize:设定内存的永久保存区域(JDK7)
    • XX:MaxPermSize:设定最大内存的永久保存区域(JDK7)

    JDK1.7调节参数与查看参数:

    Administrator@MicroWin10-1535 MINGW64 ~/Desktop/test
    $ javac Test.java
    
    Administrator@MicroWin10-1535 MINGW64 ~/Desktop/test
    $ java -Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m Test
    C:UsersAdministrator>jps
    19284 Jps
    6628 NetworkServerControl
    18072
    22340
    21860 Test
    
    C:UsersAdministrator>jmap -heap 21860
    Attaching to process ID 21860, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 24.80-b11
    
    using thread-local object allocation.
    Parallel GC with 4 thread(s)
    
    Heap Configuration:
       MinHeapFreeRatio = 0
       MaxHeapFreeRatio = 100
       MaxHeapSize      = 1073741824 (1024.0MB)
       NewSize          = 1310720 (1.25MB)
       MaxNewSize       = 17592186044415 MB
       OldSize          = 5439488 (5.1875MB)
       NewRatio         = 2
       SurvivorRatio    = 8
       PermSize         = 536870912 (512.0MB)
       MaxPermSize      = 536870912 (512.0MB)
       G1HeapRegionSize = 0 (0.0MB)
    
    Heap Usage:
    PS Young Generation
    Eden Space:
       capacity = 268959744 (256.5MB)
       used     = 10758632 (10.260231018066406MB)
       free     = 258201112 (246.2397689819336MB)
       4.000090065522965% used
    From Space:
       capacity = 44564480 (42.5MB)
       used     = 0 (0.0MB)
       free     = 44564480 (42.5MB)
       0.0% used
    To Space:
       capacity = 44564480 (42.5MB)
       used     = 0 (0.0MB)
       free     = 44564480 (42.5MB)
       0.0% used
    PS Old Generation
       capacity = 716177408 (683.0MB)
       used     = 0 (0.0MB)
       free     = 716177408 (683.0MB)
       0.0% used
    PS Perm Generation
       capacity = 536870912 (512.0MB)
       used     = 2614432 (2.493316650390625MB)
       free     = 534256480 (509.5066833496094MB)
       0.48697590827941895% used
    
    1523 interned Strings occupying 140352 bytes.

    当然了:还有另外的配置,只是不常用

    -XX:NewSize:新生代初始化内存的大小(注意:该值需要小于-Xms的值)。

    -XX:MaxNewSize:新生代可被分配的内存的最大上限(注意:该值需要小于-Xmx的值)。

    -Xmn:对-XX:newSize、-XX:MaxnewSize两个参数同时进行配置(注意:JDK1.4之后才有该参数)。

    例如:

    java -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:OldSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m Test

     查看内存:

    或者:

    java -Xms1024m -Xmx1024m -Xmn512m -XX:PermSize=512m -XX:MaxPermSize=512m Test

      结果:

    在JDK1.8中,取消了PermGen,取而代之的是Metaspace,所以PermSize和MaxPermSize参数失效,取而代之的是元空间:

     例如下面配置设置元空间的大小和最大大小:(等同于JDK7的永久区)

    liqiang@root MINGW64 ~/Desktop/新建文件夹 (2)
    $ javac Test.java
    
    liqiang@root MINGW64 ~/Desktop/新建文件夹 (2)
    $ java -Xms1024m -Xmx1024m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m Test 

     查看参数:

    C:Usersliqiang>jmap -heap 2381712
    Attaching to process ID 2381712, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 25.121-b13
    
    using thread-local object allocation.
    Parallel GC with 4 thread(s)
    
    Heap Configuration:
       MinHeapFreeRatio         = 0
       MaxHeapFreeRatio         = 100
       MaxHeapSize              = 1073741824 (1024.0MB)
       NewSize                  = 357564416 (341.0MB)
       MaxNewSize               = 357564416 (341.0MB)
       OldSize                  = 716177408 (683.0MB)
       NewRatio                 = 2
       SurvivorRatio            = 8
       MetaspaceSize            = 536870912 (512.0MB)
       CompressedClassSpaceSize = 1073741824 (1024.0MB)
       MaxMetaspaceSize         = 536870912 (512.0MB)
       G1HeapRegionSize         = 0 (0.0MB)
    
    Heap Usage:
    PS Young Generation
    Eden Space:
       capacity = 268435456 (256.0MB)
       used     = 10737448 (10.240028381347656MB)
       free     = 257698008 (245.75997161865234MB)
       4.000011086463928% used
    From Space:
       capacity = 44564480 (42.5MB)
       used     = 0 (0.0MB)
       free     = 44564480 (42.5MB)
       0.0% used
    To Space:
       capacity = 44564480 (42.5MB)
       used     = 0 (0.0MB)
       free     = 44564480 (42.5MB)
       0.0% used
    PS Old Generation
       capacity = 716177408 (683.0MB)
       used     = 0 (0.0MB)
       free     = 716177408 (683.0MB)
       0.0% used
    
    1597 interned Strings occupying 146680 bytes.

    补充:查看JVM参数的方法

    第一种:jps+jmap

    C:UsersAdministrator>jps
    16740 Main
    8388 Jps
    4248
    11564 Server
    11884 NetworkServerControl
    
    C:UsersAdministrator>jmap -heap 11564
    Attaching to process ID 11564, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 25.121-b13
    
    using thread-local object allocation.
    Parallel GC with 4 thread(s)
    
    Heap Configuration:
       MinHeapFreeRatio         = 0
       MaxHeapFreeRatio         = 100
       MaxHeapSize              = 2155872256 (2056.0MB)
       NewSize                  = 718274560 (685.0MB)
       MaxNewSize               = 718274560 (685.0MB)
       OldSize                  = 1437597696 (1371.0MB)
       NewRatio                 = 2
       SurvivorRatio            = 8
       MetaspaceSize            = 536870912 (512.0MB)
       CompressedClassSpaceSize = 1073741824 (1024.0MB)
       MaxMetaspaceSize         = 536870912 (512.0MB)
       G1HeapRegionSize         = 0 (0.0MB)
    
    Heap Usage:
    PS Young Generation
    Eden Space:
       capacity = 538968064 (514.0MB)
       used     = 132464928 (126.32839965820312MB)
       free     = 406503136 (387.6716003417969MB)
       24.577509661129014% used
    From Space:
       capacity = 89653248 (85.5MB)
       used     = 89640016 (85.48738098144531MB)
       free     = 13232 (0.0126190185546875MB)
       99.98524091397113% used
    To Space:
       capacity = 89653248 (85.5MB)
       used     = 0 (0.0MB)
       free     = 89653248 (85.5MB)
       0.0% used
    PS Old Generation
       capacity = 1437597696 (1371.0MB)
       used     = 75478984 (71.98236846923828MB)
       free     = 1362118712 (1299.0176315307617MB)
       5.250355103518475% used
    
    61705 interned Strings occupying 7127136 bytes.

    第二种:用JDK自带的工具 jconsole或者jvisualvm:

     

    补充:32位windows平台对每个进程能管理的内存是有限制的,限制是2GB

  • 相关阅读:
    spring-boot、spring-data-jpa整合
    Executors中的几种线程调用方式
    通过BeanFactoryPostProcessor来获取bean
    spring、spring-data-redis整合使用
    java.io几种读写文件的方式
    springmvc+quartz简单实现定时调度
    httpclient跳过https请求的验证
    Gson的几种使用方式
    httpclient的几种请求URL的方式
    【转】文件各种上传,离不开的表单
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/9668473.html
Copyright © 2011-2022 走看看