学习笔记
有关java内存划分的学习笔记
今天在重新复习巩固java知识时,发现以前疏漏了有关java内存的相关知识点,简单理解了在数组内容变化或者输出运行时,java内存中的过程。
首先先理解java的内存划分,一共分为以下5个部分:
1.栈(Stack):存放方法中的局部变量,方法的运行在栈当中
局部变量:方法的参数,或者是方法内部{}的变量
作用域:一旦超出作用域,立刻从栈内存中消失
2.堆(Heap):凡是new出来的东西,都在堆当中
堆内存里面的东西都有一个地址值,用16进制表示
堆内存里的数据,都有默认值,规则:
整数:默认为0
浮点数:默认为0.0
字符:默认为’\u0000’
布尔:默认为false
引用类型:默认为null
3.方法区(Method Area):存储.class相关信息,包含方法的信息
4.本地方法栈(Native Method Stack):与操作系统相关
5.寄存器(Pc Register):与CPU相关
两个数组的内存图
两个引用指向同一个数组的内存图
中途更改数组引用(老数组自动回收)