@@ -43,8 +43,8 @@ System.gc(),通知 GC 运行,但是 Java 语言规范并不保证 GC 一定会
4343&ensp ;&ensp ;&ensp ;&ensp ; how:对象如何被回收的?4 种垃圾回收算法。
4444
4545### <a name =" 2 " >2. JVM的内存布局/内存模型。(需要详细到每个区放什么)</a >
46- 区别于”JAVA 的内存模型”
47- 图图图
46+ 区别于”JAVA 的内存模型” < br >
47+ ![ JVM的内存模型 ] ( /data/images/Java应届生面试突击/Java基础/01_2.png ) < br >
4848参见《深入理解 java 虚拟机》。
4949
5050### <a name =" 3 " >3. JVM的4种引用和使用场景?</a >
@@ -110,6 +110,10 @@ PhantomReference pr = new PhantomReference (object, queue); <br>
110110&ensp ;&ensp ;&ensp ;&ensp ;
1111111 . 单条引用链的可达性以最弱的一个引用类型来决定; <br >
1121122 . 多条引用链的可达性以最强的一个引用类型来决定; <br >
113+
114+ ![ 树型引用链] ( /data/images/Java应届生面试突击/Java基础/01_3.png ) <br >
115+
116+
113117&ensp ;&ensp ;&ensp ;&ensp ;
114118 我们假设图 2 中引用1和3为强引用,5为软引用,7为弱引用,对于对
115119象 5 按照这两个判断原则,路径1-5取最弱的引用5,因此该路径对对象 5 的
@@ -202,8 +206,9 @@ MyObject object = anotherObject.clone();<br>
2022061.被克隆的类要实现 Cloneable 接口。<br >
2032072.被克隆的类要重写 clone()方法。<br >
204208
205-
206- 图图
209+ ![ 图] ( /data/images/Java应届生面试突击/Java基础/01_8_1.png ) <br >
210+ ![ 图] ( /data/images/Java应届生面试突击/Java基础/01_8_2.png ) <br >
211+ ![ 图] ( /data/images/Java应届生面试突击/Java基础/01_8_3.png ) <br >
207212
208213* 扩展: <br >
209214&ensp ;&ensp ;&ensp ;&ensp ;
@@ -250,17 +255,22 @@ MyObject object = anotherObject.clone();<br>
250255 参见《深入理解 java 虚拟机》。
251256
252257### <a name =" 11 " >11. 什么是内存泄露和内存溢出。</a >
258+ <br >
253259
254- 图图
260+ ![ 图 ] ( /data/images/Java应届生面试突击/Java基础/01_11.png ) < br >
255261
256262 &ensp ;&ensp ;&ensp ;&ensp ;
257263 内存泄漏的典型例子是一个没有重写 hashCode 和 equals 方法的 Key 类在
258264HashMap 中保存的情况,最后会生成很多重复的对象。所有的内存泄露最后都
259265会 抛 出OutOfMemoryError异 常 ( Exceptionjava.lang.OutOfMemoryError: Java heap space)。<br >
260266
261- 造成内存泄露的原因:
267+ 造成内存泄露的原因: <br >
268+
269+ ![ 图] ( /data/images/Java应届生面试突击/Java基础/01_11_2.png ) <br >
270+ ![ 图] ( /data/images/Java应届生面试突击/Java基础/01_11_3.png ) <br >
271+ ![ 图] ( /data/images/Java应届生面试突击/Java基础/01_11_4.png ) <br >
272+
262273
263- 图图
264274
265275* 内存泄露的解决方案(重要!!): <br >
266276 1、避免在循环中创建对象。 <br >
@@ -271,13 +281,12 @@ HashMap 中保存的情况,最后会生成很多重复的对象。所有的内
271281* 在实际场景中,你怎么查找内存泄露?<br >
272282 可以使用 Jconsole。
273283
274- 没有内存泄露的:
275-
276- 图图
284+ 没有内存泄露的:<br >
285+ ![ 图] ( /data/images/Java应届生面试突击/Java基础/01_11_5.png ) <br >
277286
278- 造成内存泄露的:如果内存的大小持续地增长,则说明系统存在内存泄漏。
279287
280- 图图
288+ 造成内存泄露的:如果内存的大小持续地增长,则说明系统存在内存泄漏。<br >
289+ ![ 图] ( /data/images/Java应届生面试突击/Java基础/01_11_6.png ) <br >
281290
282291* 内存溢出:指程序运行过程中无法申请到足够的内存而导致的一种错误。
283292
@@ -421,7 +430,11 @@ Java 内存泄露的问题调查定位: jmap,jstack 的使用等等。<br>
421430 &ensp ;&ensp ;&ensp ;&ensp ;
422431 Jconsole: 主要是内存监控和线程监控。内存监控:可以显示内存的使用情况。线程监控:遇到线程停顿时,可以使用这个功能。<br >
423432
424- 图图图
433+
434+ ![ 图] ( /data/images/Java应届生面试突击/Java基础/01_15.png ) <br >
435+ ![ 图] ( /data/images/Java应届生面试突击/Java基础/01_15_2.png ) <br >
436+ ![ 图] ( /data/images/Java应届生面试突击/Java基础/01_15_3.png ) <br >
437+
425438
426439### <a name =" 16 " >16. 说下虚拟机的类加载机制。</a >
427440参见《深入理解 java 虚拟机》。
0 commit comments