Skip to content

Commit eaf30a0

Browse files
author
JasonLou
committed
update
1 parent d891922 commit eaf30a0

16 files changed

Lines changed: 27 additions & 14 deletions

File tree

‎Java应届生面试突击/Java基础/01_JVM相关.md‎

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ System.gc(),通知 GC 运行,但是 Java 语言规范并不保证 GC 一定会
4343
     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;
111111
1. 单条引用链的可达性以最弱的一个引用类型来决定; <br>
112112
2. 多条引用链的可达性以最强的一个引用类型来决定; <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>
202206
1.被克隆的类要实现 Cloneable 接口。<br>
203207
2.被克隆的类要重写 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 类在
258264
HashMap 中保存的情况,最后会生成很多重复的对象。所有的内存泄露最后都
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 虚拟机》。
258 KB
Loading
182 KB
Loading
267 KB
Loading
150 KB
Loading
207 KB
Loading
272 KB
Loading
125 KB
Loading
39 KB
Loading
9.55 KB
Loading

0 commit comments

Comments
 (0)