JVM探究

Java虚拟机(jvm)面试会问到的面试题。

  1. 请你谈谈你对JVM的理解?Java8虚拟机和之前的变化更新?
  2. 什么是OOM,什么事栈溢出StackOverFlowError?怎么分析?
  3. JVM的常用调优参数有哪些?
  4. 内存快照如何抓取,怎么分析Dump文件?
  5. 谈谈JVM中,了类加载器你的认识?

JVM知识点

  1. JVM的位置
    JVM探究

  2. JVM的体系结构
    JVM探究
    JVM探究

  3. 类加载器
    作用:加载Class文件
    启动类加载器:加载JVM运行以来的jar包
    扩展类加载器:加载jdk=>jvm里面lib目录中的ext中的jar包
    应用程序类加载器:根据ClassPath指定路径,寻找应用程序所有加载class字节码文件,从字节码文件中加载类型对应的class对象、
    类从被加载到虚拟机内存中开始,到卸载出内存为止,它的生命周期:
    加载,验证,准备,解析,初始化,使用,卸载
    其中只有加载、验证、准备、初始化、和卸载这5个阶段的顺序是确定的。
    详细说明:链接

  4. 双亲委派机质
    JVM探究
    这种设计有个好处是,如果有人想替换系统级别的类:String.java。篡改它的实现,但是在这种机制下这些系统的类已经被Bootstrap classLoader加载过了,所以并不会再去加载,从一定程度上防止了危险代码的植入。

  5. 沙箱安全机质
    Java安全模型的核心就是Java沙箱(sandbox),什么是沙箱?沙箱是一个限制程序运行的环境。沙箱机制就是将 Java 代码限定在虚拟机(JVM)特定的运行范围中,并且严格限制代码对本地系统资源访问,通过这样的措施来保证对代码的有效隔离,防止对本地系统造成破坏。沙箱主要限制系统资源访问,那系统资源包括什么?——CPU、内存、文件系统、网络。不同级别的沙箱对这些资源访问的限制也可以不一样。
    详细说明:

  6. Native

  7. PC寄存器

  8. 方法区

  9. 三种JVM

  10. 新生区,老年区

  11. 永久区

  12. 堆内存调优

  13. GC

  14. 常用算法

  15. JMM

  16. 总结