JVM实例化对象
方式一
Object obj = new Object();
比如
寫在100個循環內,等于你有100個引用,對應了100個對象
所以,100個對象在一段時間內,都是會占用內存
直到內存不足GC主動回收
方式二
obj = new Object();
比如
寫在100個循環外,等于使用1個引用,分別100次,調用了100個對象
所以,當后一個對象init后,前一個對象已經是無引用狀態,會很快的被GC自動回收
在循環還未結束時,可能已經進行了多次GC回收
區別
Object obj=null;
相當于
Object obj;
只在棧中創建一個變量
無指向的對象,在堆中不分配內存
Object obj=new Object();
相當于
Object obj;
obj = new Object();
棧中創建一個變量,在堆中給他分配內存
創建了一個對象,變量指向這個對象
棧區,主要是存放引用
堆區,主要是存放真實的數據
總結
- 上一篇: JVM栈的数据共享
- 下一篇: HIbernate的检索方式