一、JVM
-
JVM的原理:https://baijiahao.baidu.com/s?id=1606480770208000096&wfr=spider&for=pc
-
JVM的内存结构:https://blog.csdn.net/bluetjs/article/details/52874852
-
JVM的栈中引用如何和堆中的对象产生关联:对象生成时,产生的首地址存储在栈中,这样两者就关联起来了。
-
逃逸分析技术:https://blog.csdn.net/kinger0/article/details/47357333
-
常见GC算法:https://blog.csdn.net/windcake/article/details/54810052
-
CMS垃圾回收过程,CMS的各个阶段哪两个是Stop the world的:https://blog.csdn.net/mawming/article/details/51967472
-
G1收集器(相对CMS的优势:不会产生碎片):https://www.cnblogs.com/oldtrafford/p/6883796.html
-
eden survivor区的比例,为什么是这个比例,eden survivor的工作过程:https://blog.csdn.net/lojze_ly/article/details/49456255
-
JVM如何判断一个对象是否该被GC,可以视为root的都有哪几种类型:https://blog.csdn.net/u012941811/article/details/52427372
-
强软弱虚引用的区别以及GC对他们执行怎样的操作:https://www.cnblogs.com/alias-blog/p/5793108.html
-
Java是否可以GC直接内存:不可以。
-
Java类加载过程:https://blog.csdn.net/zcxwww/article/details/51330327
-
双亲委派模型的过程以及优势:https://blog.csdn.net/u011080472/article/details/51332866
-
常用的JVM调优参数:https://blog.csdn.net/beyond59241/article/details/73719253
-
Java有没有主动触发GC的方式:没有。
-
JVM 堆内存和非堆内存:http://www.importnew.com/27645.html
-
GC 什么时候开始:GC 经常发生的区域是堆区,堆区还可以细分为新生代、老年代,新生代还分为一个 Eden 区和两个 Survivor 区。1)对象优先在 Eden 中分配,当 Eden 中没有足够空间时,虚拟机将发生一次 Minor GC,因为 Java 大多数对象都是朝生夕灭,所以 Minor GC 非常频繁,而且速度也很快。2)Full GC,发生在老年代的 GC,当老年代没有足够的空间时即发生 Full GC,发生 Full GC 一般都会有一次 Minor GC。 大对象直接进入老年代,如很长的字符串数组,虚拟机提供一个;XX:PretenureSizeThreadhold 参数,令大于这个参数值的对象直接在老年代中分配,避免在 Eden 区和两个 Survivor 区发生大量的内存拷贝;发生 Minor GC 时,虚拟机会检测之前每次晋升到老年代的平均大小是否大于老年代的剩余空间大小,如果大于,则进行一次 Full GC,如果小于,则查看 HandlePromotionFailure 设置是否允许担保失败,如果允许,那只会进行一次 Minor GC,如果不允许,则改为进行一次 Full GC。
-
内存泄漏和内存溢出:
-
谈谈;