Java
垃圾回收机制
垃圾回收机制[
[
内存管理
内存管理]
]
1.
对象和垃圾
:
a)
新建对象
Dog
d
=
new
Dog();
一个变量指向一个对象
,
系统会在堆内存中分配一块
空间
b)
当对象不再被任何变量引用的时候
,
这块内存就成为了垃圾
,
等待
GC
回收
2.GC
的特征
:
c)
GC
只负责回收堆内存中的对象
,
而不会回收物理资源
.(
如网络
io,
数据库连接等
)
d)
GC
无法被精确控制
,
会在适当的是时候进行
,
当变量不再不被引用时回收
e)
GC
在回收任何对象之前
,
总会调用它的
finalize
方法
,
该方法可能是该对象重新激活
,
从而导致回收失败
.
3.
内存分配方式
:
每个
Java
线程都拥有自己的内存栈
(stack).
用来存放局部变量和返回值
,
栈是在线程启动
时分配的
.
所有的线程共享一个内存堆
(heap),
所有运行时的内存分配都在堆上进行
.
换句话说就是
所有的对象都是在对上创建的
.
队是在
Java
虚拟机启动时分配好的
.
栈
stack
堆
heap
变量
=
对象地址
a
=
0x9900
对象
0x9900
JVM
内存模型