Page 2
jvm 中内存分配
new
new
perm
perm
old
old
栈:空间小,速度比较快, 用来放对象
的引用,以及基本类型。
堆:空间大,一般所有创建的对象都放
在这里。
Page 3
堆的分类
JVM 堆
新域( new ):存储所有新成生的对象
旧域( old ):新域中的对象,经过了一定次数的 GC 循
环后,被移入旧域
永久域( perm )(非认识层次):存储类和方法对象,
从配置的角度看,这个域是独立的,不包括在 JVM 堆内。
默认为 64M 。
Page 4
新生对象的内存分配
应用启动, perm 堆中装载类对象
例: Book book=new Book();
1
在 new,old 堆中查找 Book 的对象,如果没有到 2 否则到 3
2
new 堆中创建实例对象
3
栈中创建引用对象指向堆中的实例对象
4
Page 5
jvm 中
jvm 中的三类对象
实例对象
•
保存在 new , old 堆
中
•
被引用对象以类似于
指针映射
类对象
•
保存在 perm 堆中
•
应用启动装入
•
* .class 文件
引用对象
•
保存在栈中
•
被应用调用
引用对象
实例对象
类对象