java内存
2021-10-17 10:36:37 9 举报
AI智能生成
java内存
作者其他创作
大纲/内容
栈区(Stack)
方法中的局部变量(方法的运行一定在栈中)
堆内存空间的访问地址
堆区(Heap)
存放由new创建的对象实例和数组(含成员变量)
堆内存的所有东西都有一个地址(16进制)
堆里面的数据(即成员变量)都有默认值
注意区分:局部变量创建后没有默认值,要初始化后才能使用
注意区分:局部变量创建后没有默认值,要初始化后才能使用
整数:0
浮点数:0.0
字符:'\u0000'
布尔:false
引用类型:null
方法区(Method Area)
存储.class相关信息,包含方法的信息
本地方法栈(Native Method Stack)
与操作系统相关
程序计数器(PC Register)
与CPU相关
Java虚拟机栈
int[] array = new int[100];即左值储存地址,右值即为地址
int[] arrayA = arrayB;//数组浅拷贝 arrayB是地址 将数组B的地址赋值给int[] arrayA
浅拷贝:两个变量引用同一个数组,指向同一块内存空间
内存图理解
只有一个对象的内存图
两个对象使用同一个方法的内存图
两个引用指向同一个对象的内存图
使用对象类型作为方法的参数
使用对象类型作为方法的返回值
进栈(压栈)、出栈(弹栈)先进后出
自由主题
方法区
三种情况: java7之前,方法区位于永久代(PermGen),永久代和堆相互隔离,永久代的大小在启动JVM时可以设置一个固定值,不可变; java7中,static变量从永久代移到堆中; java8中,取消永久代,方法存放于元空间(Metaspace),元空间仍然与堆不相连,但与堆共享物理内存,逻辑上可认为在堆中
0 条评论
下一页
为你推荐
查看更多