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