jvm面试知识总结:
1.jvm系统结构:
(1)主要是类加载系统,运行时数据区,执行引擎,本地方法接口
(2)运行时数据区:方法区,堆,程序计数器,java栈,本地方法栈
2.类加载器:4种(1)启动类加载器(bootstrap)jre/rt.jar
(2)扩展类加载器(extendtion)jre/ext/*.jar
(3)应用程序加载器(appclassloader)加载当前应用classpath下的所有类
(4)用户自定义加载器
3.类加载涉及两个原则:(1)双亲委派机制:加载类时先给父类加载器加载,从上到下加载
(2)沙箱安全机制,保证jdk本身的代码不被污染
4.方法区:存储类和方法信息保存的地方,属于线程共享区域,静态变量,常量,类信息,构造方法,运行时常量池也在这
5.stack栈:不存在垃圾回收问题,8种基本数据类型,对象引用变量,实例方法都在栈内存分配
6.heap堆结构:java7以前:新生区(伊甸区,幸存0区/from区,幸存1区to区)比例是8:1:1,养老(线程池),永久区,java8以后永久区变成元空间,
7.java.lang.outofmemoryerror:java heap space异常:原因有2,(1)堆内存设置不够,可通过-xms(初始),-xmx(最大)调整
(2)java代码中产生大量的对象被引用,无法进行垃圾回收
8.永久区异常:java.lang.outofmemoryerror:permgen space 异常:说明是永久区内存设置不够,原因:启动时加载大量的第三方jar包或者是大量反射生成类被加载
java1.6:常量池在方法区,java1.7:常量池在堆,java1.8:常量池在元空间
9.垃圾回收机制:分代回收算法:频繁收集用yong区,较少收集old区,基本不动perm区
10.常用算法:(1)复制算法,常用于年轻代,比较费内存,效率高,
(2)标记清除,用于老年代,费时,产生碎片
*(3)标记压缩,/标记清除压缩,节省空间
jvm知识总结
最新推荐文章于 2024-09-07 23:21:42 发布