JVM常见面试题
1. GC的回收策略,一般什么时候会发生GC?如何处理?
频繁收集年轻代(Eden区 Survivor From区 Survivor To区),Minor GC
较少收集老年代,Full GC
基本不动元空间(jdk 1.8)
Java中的GC回有两种回收:年轻代的Minor GC,老年代的Full GC;新对象创建时如果Eden区不足会触发MinorGC,如果老年代的内存空间不足会触发FullGC,如果空间都不足抛出OutOfMemoryError
Minor GC和Full GC的触发条件
2. GC的三种收集方法:标记清除、标记整理、复制算法的原理特点
内存效率:复制算法>标记清除算法>标记整理算法
内存整齐度:复制算法=标记整理算法>标记清除算法
内存利用率:标记整理算法=标记清除算法>复制算法
3. Minor GC运行的很频繁可能是什么原因引起的?Minor GC运行的很慢有可能是什么原因引起的?
1、 产生了太多朝生夕灭的对象导致需要频繁Minor GC
2、 新生代空间设置的比较小
1、 新生代空间设置过大
2、 对象引用链较长,进行可达性分析时间较长
3、 新生代survivor区设置的比较小,清理后剩余的对象不能装进去需要移动到老年代,造成移动开销
4、 内存分配担保失败,由Minor GC转化为Full GC
5、 采用的垃圾收集器效率较低,比如新生代使用serial收集器
4. 双亲委派机制
启动类加载器:负责加载%JAVA_HOME%\bin目录下的所有jar包,或者是-Xbootclasspath参数指定的路径;
扩展类加载器:负责加载%JAVA_HOME%\bin\ext目录下的所有jar包,或者是java.ext.dirs参数指定的路径;
应用程序类加载器:负责加载用户类路径上所指定的类库,如果应用程序中没有自定义加载器,那么次加载器就为默认加载器
5. JVM垃圾回收的时候如何确定垃圾,什么是GC Roots
6. JVM常用基本配置参数有哪些
(1) 如何查看运行中程序的JVM信息
jps 查看进程信息
jinfo -flag 配置项 进程号
jinfo -flags 进程号 ==== 查看所有配置
(2) JVM参数类型
7. 强引用、软引用、弱引用、虚引用作用分别是什么
强引用 Reference ==== 当内存不足,JVM开始垃圾回收,对于强引用对象,就算出现了OOM也不会堆该对象进行回收
软引用 SoftReference ==== 用 java.lang.ref.SOftReference 类来实现;当系统内存充足时他不会被回收,当内存不足时会被回收
弱引用 WeakReference ===== 用java.lang.ref.WeakReference类来实现 ;只要垃圾回收机制一运行,不管JVM的内存空间是否足够,都会回收
虚引用PhantomReference ====== 在任何时候都可能被垃圾回收器回收,他不能单独使用也不能通过它访问对象,虚引用和引用队列(ReferenceQueeu)联合使用
WeakHashMap
key是弱引用
8. OOM的理解
java.lang.StackOverflowError -> 栈空间溢出 ,递归调用卡死
java.lang.OutOfMemoryError: Java heap space -> 堆内存溢出 , 对象过大
==============================================
java.lang.OutOfMemoryError: GC overhead limit exceeded -> GC回收时间过长,超过98%的时间用来做GC并且回收了不到2%的堆内存
连续多次GC,都回收了不到2%的极端情况下才会抛出。如果不抛出,那就是GC清理的一点内存很快会被再次填满,迫使GC再次执行,这样就恶性循环,cpu使用率一直是100%,而GC却没有任何成果
java.lang.OutOfMemoryError: Direct buffer memory
java.lang.OutOfMemoryError: unable to create new native thread
应用创建了太多线程,一个应用进程创建了多个线程,超过系统承载极限
服务器并不允许你的应用程序创建这么多线程,linux系统默认允许单个进程可以创建的线程数是1024,超过这个数量,就会报错
解决办法 -> 降低应用程序创建线程的数量,分析应用给是否针对需要这么多线程,如果不是,减到最低;修改linux服务器配置
java.lang.OutOfMemoryError: Metaspace
元空间主要存放了虚拟机加载的类的信息、常量池、静态变量、即时编译后的代码
《深入理解JVM》P58
9. GC垃圾回收算法和垃圾收集器的关系
10. G1垃圾收集器