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:PermSize:设定内存的永久保存区域(JDK7)
- XX:MaxPermSize:设定最大内存的永久保存区域(JDK7)
JDK1.7调节参数与查看参数:
Administrator@MicroWin10-1535 MINGW64 ~/Desktop/test$ javac Test.javaAdministrator@MicroWin10-1535 MINGW64 ~/Desktop/test$ java -Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m Test
C:\Users\Administrator>jps19284 Jps6628 NetworkServerControl180722234021860 TestC:\Users\Administrator>jmap -heap 21860Attaching to process ID 21860, please wait...Debugger attached successfully.Server compiler detected.JVM version is 24.80-b11using 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 GenerationEden Space: capacity = 268959744 (256.5MB) used = 10758632 (10.260231018066406MB) free = 258201112 (246.2397689819336MB) 4.000090065522965% usedFrom Space: capacity = 44564480 (42.5MB) used = 0 (0.0MB) free = 44564480 (42.5MB) 0.0% usedTo Space: capacity = 44564480 (42.5MB) used = 0 (0.0MB) free = 44564480 (42.5MB) 0.0% usedPS Old Generation capacity = 716177408 (683.0MB) used = 0 (0.0MB) free = 716177408 (683.0MB) 0.0% usedPS Perm Generation capacity = 536870912 (512.0MB) used = 2614432 (2.493316650390625MB) free = 534256480 (509.5066833496094MB) 0.48697590827941895% used1523 interned Strings occupying 140352 bytes.
在JDK1.8中,取消了PermGen,取而代之的是Metaspace,所以PermSize和MaxPermSize参数失效,取而代之的是元空间:
例如下面配置设置元空间的大小和最大大小:(等同于JDK7的永久区)
liqiang@root MINGW64 ~/Desktop/新建文件夹 (2)$ javac Test.javaliqiang@root MINGW64 ~/Desktop/新建文件夹 (2)$ java -Xms1024m -Xmx1024m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m Test
查看参数:
C:\Users\liqiang>jmap -heap 2381712Attaching to process ID 2381712, please wait...Debugger attached successfully.Server compiler detected.JVM version is 25.121-b13using 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 GenerationEden Space: capacity = 268435456 (256.0MB) used = 10737448 (10.240028381347656MB) free = 257698008 (245.75997161865234MB) 4.000011086463928% usedFrom Space: capacity = 44564480 (42.5MB) used = 0 (0.0MB) free = 44564480 (42.5MB) 0.0% usedTo Space: capacity = 44564480 (42.5MB) used = 0 (0.0MB) free = 44564480 (42.5MB) 0.0% usedPS Old Generation capacity = 716177408 (683.0MB) used = 0 (0.0MB) free = 716177408 (683.0MB) 0.0% used1597 interned Strings occupying 146680 bytes.
补充:查看JVM参数的方法
第一种:jps+jmap
C:\Users\Administrator>jps16740 Main8388 Jps424811564 Server11884 NetworkServerControlC:\Users\Administrator>jmap -heap 11564Attaching to process ID 11564, please wait...Debugger attached successfully.Server compiler detected.JVM version is 25.121-b13using 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 GenerationEden Space: capacity = 538968064 (514.0MB) used = 132464928 (126.32839965820312MB) free = 406503136 (387.6716003417969MB) 24.577509661129014% usedFrom Space: capacity = 89653248 (85.5MB) used = 89640016 (85.48738098144531MB) free = 13232 (0.0126190185546875MB) 99.98524091397113% usedTo Space: capacity = 89653248 (85.5MB) used = 0 (0.0MB) free = 89653248 (85.5MB) 0.0% usedPS Old Generation capacity = 1437597696 (1371.0MB) used = 75478984 (71.98236846923828MB) free = 1362118712 (1299.0176315307617MB) 5.250355103518475% used61705 interned Strings occupying 7127136 bytes.
第二种:用JDK自带的工具 jconsole或者jvisualvm: