什么是JVM?简单来说它就是一个运行Java代码的解释器,那大家应该都是有经验的Java开发人员了,想想为何要学习JVM?[面试??调优??装B??]其实啊,作为螺丝钉程序员,JVM差不多可能了解一下就行啦,不需要看懂内部的细节也照样可以写出优质的Java代码。但是呢,如果不深入学习,一到造火箭的时候(面试),不懂JVM的你岂不是会被虐到体无完肤?好吧,我就是一个血淋淋的例子,没有惨,只有更惨!
所以,万分感谢朋友送我的“高分JVM”秘籍(敲重点),感觉就像是走了个后门,赶紧迅速造起火箭来了!
先上一波面试高频题,测试一下自己水平(在先不看答案的情况下),然后再来看“高分JVM”秘籍,答不上就跟我老老实实的一起学习呗~【点击获取原件】
高分JVM_1_面试高频点77个,测试一下?
-
1、java中会存在内存泄漏吗,请简单描述。
-
2、64 位 JVM 中,int 的长度是多数?
-
3、Serial 与 Parallel GC 之间的不同之处?
-
4、32 位和 64 位的 JVM,int 类型变量的长度是多数?
-
5、Java 中 WeakReference 与 SoftReference 的区别?
-
6、JVM 选项 -XX:+UseCompressedOops 有什么作用?为什么要使用?
-
7、怎样通过 Java 程序来判断 JVM 是 32 位 还是 64位?
-
8、32 位 JVM 和 64 位 JVM 的最大堆内存分别是多数?
-
9、JRE、JDK、JVM 及 JIT 之间有什么不同?
-
10、解释 Java 堆空间及 GC?
-
11、JVM 内存区域
-
12、程序计数器(线程私有)
-
13、虚拟机栈(线程私有)
-
14、本地方法区(线程私有)
-
15、你能保证 GC 执行吗?
-
16、怎么获取 Java 程序使用的内存?堆使用的百分比?
-
17、Java 中堆和栈有什么区别?
-
18、描述一下 JVM 加载 class 文件的原理机制
-
19、GC 是什么?为什么要有 GC?
-
20、堆(Heap-线程共享) -运行时数据区
-
21、方法区/永久代(线程共享)
-
22、JVM 运行时内存
-
23、新生代
-
24、老年代
-
25、永久代
-
26、JAVA8 与元数据
-
27、引用计数法
-
28、可达性分析
-
29、标记清除算法( Mark-Sweep)
-
30、复制算法(copying)
-
31、标记整理算法(Mark-Compact)
-
32、分代收集算法
-
33、新生代与复制算法
-
34、老年代与标记复制算法
-
35、JAVA 强引用
-
36、JAVA软引用
-
37、JAVA弱引用
-
38、JAVA虚引用
-
39、分代收集算法
-
40、在新生代-复制算法
-
41、在老年代-标记整理算法
-
42、分区收集算法
-
43、GC 垃圾收集器
-
44、Serial 垃圾收集器(单线程、 复制算法)
-
45、ParNew 垃圾收集器(Serial+多线程)
-
46、Parallel Scavenge 收集器(多线程复制算法、高效)
-
47、Serial Old 收集器(单线程标记整理算法 )
-
48、Parallel Old 收集器(多线程标记整理算法)
-
59、CMS 收集器(多线程标记清除算法)
-
50、G1 收集器
-
51、JVM 类加载机制
-
52、类加载器
-
53、双亲委派
-
54、OSGI( 动态模型系统)
-
55、动态改变构造
-
56、模块化编程与热插拔
-
57、JVM内存模型
-
58、栈
-
59、本地方法栈
-
60、程序计数器
-
61、堆
-
62、方法区
-
63、分代回收
-
64、堆和栈的区别
-
65、什么时候会触发FullGC
-
66、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?
-
67、对象分配规则
-
68、描述一下JVM加载class文件的原理机制?
-
69、Java对象创建过程
-
70、简述Java的对象结构
-
71、如何判断对象可以被回收
-
72、JVM的永久代中会发生垃圾回收么
-
73、垃圾收集算法
-
74、调优命令有哪些?
-
75、调优工具
-
76、Minor GC与Full GC分别在什么时候发生?
-
77、你知道哪些JVM性能调优?
答案有点多(源自[Java25大面试专题-JVM],这里截图看一部分的答案)
高分JVM_2_内存结构(程序计数器+虚拟机栈+本地方法栈+堆+方法区)
1. 程序计数器
-
1.1 定义
-
1.2 作用
2. 虚拟机栈
-
2.1 定义
-
2.2 栈内存溢出
-
2.3 线程运行诊断
3. 本地方法栈
4. 堆
-
4.1 定义
-
4.2 堆内存溢出
-
4.3 堆内存诊断
5. 方法区
-
5.1 定义
-
5.2 组成
-
5.3 方法区内存溢出
-
5.4 运行时常量池
-
5.5 StringTable
-
5.5 StringTable 特性
-
5.6 StringTable 位置
-
5.7 StringTable 垃圾回收
-
5.8 StringTable 性能调优
6. 直接内存
-
6.1 定义
-
6.2 分配和回收原理
高分JVM_3_垃圾回收
1. 如何判断对象可以回收
-
1.1 引用计数法
-
1.2 可达性分析算法
-
1.3 四种引用
2. 垃圾回收算法
-
2.1 标记清除
-
2.2 标记整理
-
2.3 复制
3. 分代垃圾回收
-
3.1 相关 VM 参数
4. 垃圾回收器
-
4.1 串行
-
4.2 吞吐量优先
-
4.3 响应时间优先
-
4.4 G1
5. 垃圾回收调优
-
5.1 调优领域
-
5.2 确定目标
-
5.3 最快的 GC
-
5.4 新生代调优
-
5.5 老年代调优
-
5.6 案例
高分JVM_4_类加载与字节码技术
高分JVM_5_内存模型
详情内容(部分)
高分JVM_6_调优(敲重点,源自:Java性能调优实战-JVM性能监测及调优)
看一张JVM调优的手绘学习路线图(可提供原件下载,见文末)...
Java性能调优实战-JVM性能监测及调优,详情目录如下,可以看见有哪几部分的内容...
-
磨刀不误砍柴工:欲知JVM调优先了解JVM内存模型
-
深入JVM即时编译器JIT,优化Java编译
-
如何优化垃圾回收机制?
-
如何优化JVM内存分配?
-
内存持续上升,我该如何排查问题?
内容详情(部分)
高分JVM_7_入门到入魔
内容解释(部分)
再BB几句
以上说了这么多,都是JVM必备必学的东西,7份高分JVM:面试+内存结构+垃圾回收+类加载与字节码技术+内存模型+JVM从入门到入魔全是我逆袭的秘籍!
BB这么多,我还想问一句,JVM到底该学习什么?其实说起来也就三点吧...
-
源码到类文件
-
类文件到JVM
-
JVM各种折腾[内部结构、执行方式、垃圾回收、本地调用等]
-
看我手绘的深入Java虚拟机的学习路线,对比大纲,可以迅速回忆全部的知识
“走后门”成功!万分感激腾讯大佬的手敲“高分JVM”秘籍
不论是我的7份高分JVM秘籍还是手绘的学习路线大纲,如果你想进阶迅速学习,可以直接来找小编给你免费分享一下便可!
<stron>【7份高分级_JVM:面试高频+内存结构+调优+垃圾回收+内存模型+类加载+手绘思维脑图】 </stron>