Java内存分配策略
一、Java程序运行时内存分配策略
- 静态存储区(方法区):主要用于存放静态数据、全局Static数据和常量的存储区。此存储区在程序编译时就已经分配好了,并且在程序整个运行期间都存在。
- 栈区:方法体内的局部变量都在栈上创建。
- 堆区:又称动态内存分配区,在程序运行中通过new关键字申请的内存。
二、栈内存和堆内存区别
栈内存:方法体内部定义(局部变量)的一些基本类型变量和对象引用都是栈内存分配的。
堆内存:通过new关键字创建的对象(包括对象中所有的成员变量)和数组都存储于堆内存中。堆内存通过GC垃圾回机制自动管理堆内存。