2.01 什么情况下会发生栈内存溢出。
栈溢出(StackOverflowError)就是方法执行时创建的栈帧超过了栈的深度。那么最有可能的就是方法递归调用产生这种结果(方法a里面继续调a方法)。
我们可以使用参数 -Xss (比如-Xmx2M)去调整JVM栈的大小来扩大栈的深度。
2.01 什么情况下会发生栈内存溢出。
堆溢出(OutOfMemoryError:java heap space)就是方法执行时创建的栈帧超过了栈的深度。那么最有可能的就是方法递归调用产生这种结果(方法a里面继续调a方法)。
我们可以使用参数 -Xmx (比如-Xmx4096M)去调整堆的总大小来扩大栈的深度。
2.01 JVM的内存结构,Eden和Survivor比例。
2.01 JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么要分为Eden和Survivor。
2.01 JVM中一次完整的GC流程是怎样的,对象如何晋升到老年代,说说你知道的几种主要的JVM参数。
2.01 你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms和G1,包括原理,流程,优缺点。
2.01 垃圾回收算法的实现原理。
2.01 当出现了内存溢出,你怎么排错。
2.01 JVM内存模型的相关知识了解多少,比如重排序,内存屏障,happen-before,主内存,工作内存等。
2.01 简单说说你了解的类加载器,可以打破双亲委派么,怎么打破。
2.01 讲讲JAVA的反射机制。
2.01 你们线上应用的JVM参数有哪些。
2.01 g1和cms区别,吞吐量优先和响应优先的垃圾收集器选择。
2.01 怎么打出线程栈信息。
参考链接
- interview_internal_reference