java 内存管理由JVM来管理

一堆:

1存储new出来的对象(包括实例变量)

 

2垃圾:没有任何引用所指向的对象,垃圾回收器(Gc)不定时到内存中去清扫垃圾, Gc的回收过程是透明的,不一定发现垃圾就立刻回收可以调用System.gc()建议虚拟机尽      快     调度Gc来回收垃圾

 

3实例变量的生命周期:创建时存储在堆中,对象被回收时一并被收回

 

4内存泄漏:不再使用的内存还没有被及时的回收

建议:若对象不再使用时应及时将其引用设置为null

 

二栈:

1存储正在调用的方法中的所有局部变量(包括方法的参数)

2调用调用方法时会为该方法在栈中分配一块对应的栈帧,栈帧中包含方法的局部变量(包括参数),当方法调用结束时,栈帧被清除,局部变量一并被清除

3局部变量的生命周期:

调用方法时存储在栈中,方法结束时与栈帧一并消失

三方法区:

1存储.class字节码文件(包括方法,静态变量)

2方法只有一份,通过this来区分具体的访问对象

 

几张关于堆栈方法区内存的大致图,适合基础学者用于理解。

java 面向对象之内存管理_第1张图片java 面向对象之内存管理_第2张图片java 面向对象之内存管理_第3张图片