Java内存分配管理知识点
2017-03-04 17:22
120 查看
Java内存分配策略为静态存储区、栈内存区、堆内存区
静态存储区:主要存放呗static声明的变量或者常量,该区域在编译时候经常分配完成并且在运行期间都是存在的可被全局使用。栈内存区:用于存放局部变量,即在执行某方法时方法体内所声明的基本类型或对象的引用地址,当方法执行结束后这些局部变量持有内存将被自动释放。因为栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
堆内存区:又称动态内存分配,主要存放那些运行时 new 出来对象实体的内存,这部分内存内存用 Java 垃圾回收机制负责回收管理。
Java回收机制GC
java new 出来的对象实体存储在堆内存中,那么这些内存是如果被释放的呢? 那就是通过 Java 的回收机制 GC 来管理。GC 释放或者说回收内存的原则是当这个实体不再被使用时回收释放,因为 GC 随时需要监控每个对象的状态,包括对象的申请、引用、被引用、赋值等,GC 都需要进行监控。所以GC给程序员带来管理内存方便的同时也给 JVM 增加负担。
GC是如何判断那些内存需要回收的请看示意图: