java程序运行在JVM(java virtual machine)上
-
栈内存:局部变量
1)基本数据类型的值
2)类的实例
定义在方法中的变量,使用完毕会立即消失 -
堆内存:new出来的内容(实体、对象)
每一个new出来的内容都有一个地址值,使用完毕会在垃圾回收器空闲时回收
- 常量池
在jvm中,每个类型都有自己的常量池,常量池是某类型所用常量的一个有序集合,包括直接常量(基本类型,String)和对其他类型、字段、方法的符号引用。
- 基本类型和引用类型
int date = 9
直接在栈分配空间存储date对应的值9
Person p1 = new Person(“jerry”,12)
在栈中分配一块内存,存放一个指向堆区p1对象的指针
基本类型:byte、short、char、int、long、boolean
存储在栈中
基本类型的包装类:Byte、Short、Character、Integer、Long、Boolean
存储在堆中
小结
Person p1 = new Person
p1是实例,实例存放在栈中,对象在堆中;操作实例本质上是通过实例的指针间接操作对象,多个实例可以指向同一个对象- 方法结束,栈中的局部变量会立即销毁,堆中对象不一定会销毁,会在垃圾回收器空闲的时候销毁。可能有其他变量也指向了此对象
- 每一个应用程序都对应唯一的JVM实例,每个JVM都有自己的内存区域
- 类的成员变量在不同对象中各不相同,都有自己的存储空间,成员变量在堆中对象里。
- 类的方法是该类所有对象共享的