Java进程内存的组成
java堆内存
- 介绍:Java堆内存指JVM用来分配Java对象的内存
- 存储场景:比如new一个String对象,String str=new String(“hello word”)。则这个对象存储在Java的堆内存之中。
- 控制参数:
- 设置堆内存的初始值 -Xms[k|m|g];如 -Xms256m
- 设置的堆内存的最大值 -Xmx[k|m|g];如 -Xmx512m
元空间(Metaspace)/Perm内存
- 介绍:内存的永久保存区域
- 存储场景:虚拟机用来加载class字节码文件的内存
- 区别:JDK1.8之后,Metaspace取代了Perm内存;Metaspace没有使用虚拟机的内存,而是本地内存
- 控制参数:
- 设置Perm内存初始值 -XX:PermSize=[k|m|g];如 -XX:PermSize=256m
- 设置Perm内存最大值 -XX:MaxPermSize=[k|m|g];如 -XX:MaxPermSize=512m
- 设置Metaspace初始值 -XX:MetaspaceSize=[k|m|g];如 -XX:MetaspaceSize=256m
- 设置Metaspace最大值 -XX:MaxMetaspaceSize=[k|m|g];如 -XX:MaxMetaspaceSize=512m
本地内存
- 介绍:JVM用于虚拟机内部运作的内存
- 使用场景:
- JVM作为程序,自身运行也是需要使用内存的
- JNI调用动态库使用的内存
- 控制参数:无需设置大小,作为一个程序,直接由操作系统分配