方法区会不会进行垃圾回收?
答:满足3个条件,方法区也会回收相应的类,条件如下
1、所有的对象实例被回收
2、加载这个类的classloader被回收
3、对类的class对象没有任何引用
什么情况下会触发新生代的垃圾回收?
答:新生代的伊甸区无法存放新增的对象,就会触发新生代的垃圾回收。
什么情况下会触发老年代的垃圾回收?
答:老年代无法存放新生代垃圾回收给过来的对象,就会触发老年代的垃圾回收,当然也有可能是大对象直接放到老年代,导致老年代被撑满。
jvm相关参数如下
-Xms,-Xmx :-X一般代表的是一些JVM参数,ms 是memory start,mx 是memory max
-Xms是堆内存的初始大小,-Xmx为堆内存的最大大小,一般会将初始大小和最大大小设置为相同的值,原因:防止内存抖动,因为在堆内存不够使用的时候,jvm向操作系统申请内存需要一定的开销。
-Xmn:是堆内存中新生代的大小,n代表的new,那么老年代的大小就是Xms-Xmn了
-XX:Permsize :永久代大小,也就是方法区,-XX:MaxPermSize 永久代最大大小
(jdk1.8以后的版本 -XX:Metaspacesize 和 -XX:MaxMetaspaceSize)
-Xss:每个线程的栈内存大小 (stack size)
idea中如何配置jvm参数
启动jar时,如何配置jvm参数
java -Xms512M -Xmx512M -Xmn256M -Xss1M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=128M -jar XXX.jar