运行java代码的时候:
1、jvm向内存要一块内存空间,默认64MB
2、jvm的内存划分
a、寄存器
b、本地方法栈:jvm在使用操作系统的时候使用,调用native方法
c、方法区(数据共享区):.class文件加载在这个区域
d、堆内存:存储对象、数组、new创造,都存储在堆内存
e、方法栈:方法运行时使用的内存
部分数据内存分布
1、int a =123
基本类型,栈里面存储的是变量a的数值123
2、int [ ] a = new int[3]
引用类型,栈里面存储的是一个地址值,地址指向的是堆内存的空间,堆内存的空间叫做对象
3、String str = new String
引用类型,栈里面存储的是一个地址值,地址指向的是堆内存的空间,堆内存的空间叫做对象
4、String s=“abc”
引用类型,栈里面存储的是一个地址,地址指向数据共享区的的常量“abc”
注意与3的区别