JVM内存模型
Java中通过多线程机制使得多个任务同时执行处理,所有的线程共享JVM内存区域main memory,而每个线程又单独的有自己的工作内存,当线程与内存区域进行交互时,数据从主存拷贝到工作内存,进而交由线程处理(操作码+操作数)。
程序计数器
-当前线程所执行的字节码的行号指示器本地方法栈
-虚拟机使用到的Native 方法服务Java 堆
-最主要的内存区域Java 栈
方法区
Java堆-存储结构
新生代
-(Eden,S1,S2)老年代
-(Old Generation)永久带
-运行时常量和内部字符串,永久代是Hotspot虚拟机特有的概念
注意:在JDK1.8中,持久代已经更名为了元空间。
常用的JVM参数设定
常用的参数设定
-Xms
1024M ,最小堆内存(默认为物理内存的1/64但小于1G),设置:-Xms1024M
-Xmx
1024M,最大堆内存(默认是物理内存的1/4但小于1G),设置:-Xmx1024M
-XX:PermSize
=64M 设置最小分配永久代空间,设置:-XX:PermSize=64M
-XX:MaxPermSize
=128M 设置最大分配永久代空间,设置:-XX:MaxPermSize=128M
- JDK1.8修改为
-XX:MetaspaceSize=200m
;-XX:MaxMetaspaceSize=256m;