JVM探究
Java虚拟机(jvm)面试会问到的面试题。
- 请你谈谈你对JVM的理解?Java8虚拟机和之前的变化更新?
- 什么是OOM,什么事栈溢出StackOverFlowError?怎么分析?
- JVM的常用调优参数有哪些?
- 内存快照如何抓取,怎么分析Dump文件?
- 谈谈JVM中,了类加载器你的认识?
JVM知识点
-
JVM的位置
-
JVM的体系结构
-
类加载器
作用:加载Class文件
启动类加载器:加载JVM运行以来的jar包
扩展类加载器:加载jdk=>jvm里面lib目录中的ext中的jar包
应用程序类加载器:根据ClassPath指定路径,寻找应用程序所有加载class字节码文件,从字节码文件中加载类型对应的class对象、
类从被加载到虚拟机内存中开始,到卸载出内存为止,它的生命周期:
加载,验证,准备,解析,初始化,使用,卸载
其中只有加载、验证、准备、初始化、和卸载这5个阶段的顺序是确定的。
详细说明:链接 -
双亲委派机质
这种设计有个好处是,如果有人想替换系统级别的类:String.java。篡改它的实现,但是在这种机制下这些系统的类已经被Bootstrap classLoader加载过了,所以并不会再去加载,从一定程度上防止了危险代码的植入。 -
沙箱安全机质
Java安全模型的核心就是Java沙箱(sandbox),什么是沙箱?沙箱是一个限制程序运行的环境。沙箱机制就是将 Java 代码限定在虚拟机(JVM)特定的运行范围中,并且严格限制代码对本地系统资源访问,通过这样的措施来保证对代码的有效隔离,防止对本地系统造成破坏。沙箱主要限制系统资源访问,那系统资源包括什么?——CPU、内存、文件系统、网络。不同级别的沙箱对这些资源访问的限制也可以不一样。
详细说明: -
Native
-
PC寄存器
-
方法区
-
栈
-
三种JVM
-
堆
-
新生区,老年区
-
永久区
-
堆内存调优
-
GC
-
常用算法
-
JMM
-
总结