jvm内存模型
年轻代:年轻代主要是存放,朝生夕死的对象,也就是存活时间短的对象
老年代:老年代主要存放,经常使用的,生命周期长的对象
永久代:永久代主要是存放,类的一些信息,元数据
JVM中对象从年轻代到老年代的过程
1.对象创建优先分配到年轻代
2.年轻代分配的内存如果满了,那么将发生YongGC,会将年轻代的对象,转移到老年代
3.年轻代如果发生大对象进入和对象的年龄满了,会将对象直接转移到老年代
4.如果老年代满了,那么会发生old GC清理,老年代里面没有引用的对象
5.如果栈针,弹栈之后,会自动情况,栈针里面的局部变量,不会走GC
JVM 基本参数调优
-Xms: Java堆内存初始化大小
-Xmx: Java堆内存最大大小
-Xmn: Java内存新生代大小,扣除之后就只剩老年代了
-XX:PermSize: 永久代初始化大小
-XX:MaxPermSize: 永久代初始化最大大小
-Xss: 每个线程的栈大小
这里拿Idea距离说明:
测试参数
-Xms512M -Xmx512M -Xmn256M -Xss256K -XX:PermSize=128M -XX:MaxPermSize=128M
使用java包部署的流程
java -Xms512M -Xmx512M -Xmn256M -Xss256K -XX:PermSize=128M -XX:MaxPermSize=128M -jar App.jar