File tree Expand file tree Collapse file tree 2 files changed +17
-2
lines changed
Expand file tree Collapse file tree 2 files changed +17
-2
lines changed Original file line number Diff line number Diff line change 1414
1515双亲委派的好处 : 由于每个类加载都会经过最顶层的启动类加载器,比如 ` java.lang.Object ` 这样在各个类加载器下都是同一个类(只有当两个类是由同一个类加载器加载的才有意义,这两个类才相等。)
1616
17- 如果没有双亲委派的话 ,由各个类加载器自行加载的话。当用户自己编写了一个 ` java.lang.Object ` 类,那样系统中就会出现多个 ` Object ` ,这样 Java 程序中最基本的行为都无法保证,程序会变的非常混乱。
17+ 如果没有双亲委派的 ,由各个类加载器自行加载的话。当用户自己编写了一个 ` java.lang.Object ` 类,那样系统中就会出现多个 ` Object ` ,这样 Java 程序中最基本的行为都无法保证,程序会变的非常混乱。
Original file line number Diff line number Diff line change @@ -28,4 +28,19 @@ Java 堆是整个虚拟机所管理的最大内存区域,所有的对象创建
2828## 方法区
2929
3030方法区主要用于存放已经被虚拟机加载的类信息,如` 常量,静态变量 ` 。
31- 这块区域也被称为` 老年代 ` 。
31+ 这块区域也被称为` 老年代 ` 。
32+
33+ ### 运行时常量池
34+
35+ 运行时常量池是方法区的一部分,其中存放了一些符号引用。当 new 一个对象时,会检查这个区域是否有这个符号的引用。
36+
37+
38+ ## 创建对象
39+ 当 ` JVM ` 收到一个 ` new ` 指令时,会检查指令中的参数在常量池是否有这个符号的引用,还会检查该类是否已经被[ 加载] ( https://github.com/crossoverJie/Java-Interview/blob/master/MD/ClassLoad.md ) 过了,如果没有的话则要进行一次类加载。
40+
41+ 接着就是分配内存了,通常有两种方式:
42+
43+ - 指针碰撞
44+ - 空闲列表
45+
46+ 指针碰撞
You can’t perform that action at this time.
0 commit comments