java内存机制

Java把内存分成两种,堆内存和栈内存。

1>栈内存:函数中定义的基本变量以及对象的引用变量在函数的栈内存中分配,在代码块中定义基本变量就在栈中为变量分配内存空间,当超过变量的作用域后,Java会释放掉变量占用的空间,供其他变量来使用;

2>堆内存:存放new出来的对象和数组,堆中分配的对象由java虚拟机的垃圾回收器来管理;在堆中定义个对象后,可以在栈中定义一个特殊的变量,取值等于堆中的数组或对象的首地址,栈中的这个变量就是堆中对象的引用,在程序中就可以通过栈中变量的引用访问堆中对象或数组。这个栈中的引用变量在超过变量的作用域后被释放,但是堆中对象或数组占据的空间不会被释放,数组和对象在没有引用指向它的时候才变为垃圾,但仍然占据空间不释放,等待随后一个不确定的时间被垃圾回收器回收掉。

猜你喜欢

转载自my.oschina.net/u/2596536/blog/1623169