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.javaAdministrator@MicroWin10-1535 MINGW64 ~/Desktop/test
$ java-Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m Test
C:\Users\Administrator>jps19284Jps6628NetworkServerControl18072
22340
21860Test
C:\Users\Administrator>jmap -heap 21860Attaching to process ID21860, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is24.80-b11
using thread-local object allocation.
Parallel GC with4thread(s)
Heap Configuration:
MinHeapFreeRatio= 0MaxHeapFreeRatio= 100MaxHeapSize= 1073741824 (1024.0MB)
NewSize= 1310720 (1.25MB)
MaxNewSize= 17592186044415MB
OldSize= 5439488 (5.1875MB)
NewRatio= 2SurvivorRatio= 8PermSize= 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%used1523 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:\Users\liqiang>jmap -heap 2381712Attaching to process ID2381712, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is25.121-b13
using thread-local object allocation.
Parallel GC with4thread(s)
Heap Configuration:
MinHeapFreeRatio= 0MaxHeapFreeRatio= 100MaxHeapSize= 1073741824 (1024.0MB)
NewSize= 357564416 (341.0MB)
MaxNewSize= 357564416 (341.0MB)
OldSize= 716177408 (683.0MB)
NewRatio= 2SurvivorRatio= 8MetaspaceSize = 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%used1597 interned Strings occupying 146680 bytes.
补充:查看JVM参数的方法
第一种:jps+jmap
C:\Users\Administrator>jps16740Main8388Jps4248
11564Server11884NetworkServerControl
C:\Users\Administrator>jmap -heap 11564Attaching to process ID11564, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is25.121-b13
using thread-local objectallocation.
Parallel GC with4thread(s)
Heap Configuration:
MinHeapFreeRatio= 0MaxHeapFreeRatio= 100MaxHeapSize= 2155872256 (2056.0MB)
NewSize= 718274560 (685.0MB)
MaxNewSize= 718274560 (685.0MB)
OldSize= 1437597696 (1371.0MB)
NewRatio= 2SurvivorRatio= 8MetaspaceSize = 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%used61705 interned Strings occupying 7127136 bytes.
第二种:用JDK自带的工具 jconsole或者jvisualvm:
补充:32位windows平台对每个进程能管理的内存是有限制的,限制是2GB