Java内存–整理笔记
博客说明
文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!
简介
Java把内存分成:栈内存,堆内存,方法区,本地方法区和寄存器
栈(Stack)
方法必须是在栈中运行
存放的都是方法中的局部变量
局部变量:方法的参数,或是方法内部的变量
作用域:一旦超出作用域,立刻从栈内容消失
意思就是说
当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。
当数据使用完,所占空间会自动释放
堆(Heap)
凡是new出来的东西,都在堆内存当中
堆内存里面的东西多都有一个地址值
堆内存里面的数据,一般都有默认值
数据类型 | 默认值 |
---|---|
整数 | 0 |
浮点型 | 0.0 |
字符 | \u0000 |
布尔 | false |
引用 | null |
方法区(Method Area)
方法区包含所有的class和static变量
方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量
本地方法栈(Native Method Stack)
与操作系统相关
寄存器(PC Register)
与CPU相关
感谢
万能的网络
以及勤劳的自己