如果你寫Person x = new Person()的話就不是垃圾了。所謂的垃圾就是指被引用的次數(shù)為零的對象。這種匿名的對象又沒人引用他們,所以被創(chuàng)建成果之后就成了垃圾。它們的存在價值就是它們的構(gòu)造函數(shù)被調(diào)用了一次。
成都創(chuàng)新互聯(lián)公司是網(wǎng)站建設專家,致力于互聯(lián)網(wǎng)品牌建設與網(wǎng)絡營銷,專業(yè)領域包括網(wǎng)站設計、成都網(wǎng)站設計、電商網(wǎng)站制作開發(fā)、微信小程序、微信營銷、系統(tǒng)平臺開發(fā),與其他網(wǎng)站設計及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡品牌建設經(jīng)驗和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!
還有,main并不是Person類的構(gòu)造函數(shù),并不會在創(chuàng)建Person對象時候被調(diào)用。它只是程序剛啟動時候調(diào)用一次。新創(chuàng)建Person類的時候這個main已經(jīng)不視為什么特殊函數(shù),想再次調(diào)用它只可能是你自己手動調(diào)用。
java確實垃圾,沒效率,跨平臺就是個笑話,其實就一個平臺jre,連fork都不能用
1、Java的堆是一個運行時數(shù)據(jù)區(qū),類的實例(對象)從中分配空間。Java虛擬機(JVM)的堆中儲存著正在運行的應用程序所建立的所有對象,這些對象通過new、newarray、anewarray和multianewarray等指令建立,但是它們不需要程序代碼來顯式地釋放。
一般來說,堆的是由垃圾回收 來負責的,盡管JVM規(guī)范并不要求特殊的垃圾回收技術(shù),甚至根本就不需要垃圾回收,但是由于內(nèi)存的有限性,JVM在實現(xiàn)的時候都有一個由垃圾回收所管理的堆。垃圾回收是一種動態(tài)存儲管理技術(shù),它自動地釋放不再被程序引用的對象,按照特定的垃圾收集算法來實現(xiàn)資源自動回收的功能。
2、關鍵字是GC
當對象為空引用時就會被視為垃圾
你的補充,不會,用下面的程序可以測試
public class Test{
protected void finalize(){
System.out.println("垃圾");
}
public static void main(String args[]){
new Test();
Test t = new Test();
t = null; //t原來指向的那個對象成為空引用了
System.gc(); //會調(diào)用finalize()
}
}
垃圾回收就是gc(gabage collection)。
java比c++的優(yōu)點就是多了垃圾回收機制,程序員不用去關心垃圾的回收,系統(tǒng)會自動調(diào)用去回收內(nèi)存。
一般我們想回收的時候只需要調(diào)用system.gc方法就可以了。系統(tǒng)會自己去調(diào)用destroy方法和其他的回收方法釋放內(nèi)存,節(jié)省內(nèi)存空間。
垃圾回收目的:Java語言中一個顯著的特點就是引入了垃圾回收機制,使c++程序員最頭疼的內(nèi)存管理的問題迎刃而解,它使得Java程序員在編寫程序的時候不再需要考慮內(nèi)存管理。
由于有個垃圾回收機制,Java中的對象不再有“作用域”的概念,只有對象的引用才有“作用域”。垃圾回收可以有效的防止內(nèi)存泄露,有效的使用空閑的內(nèi)存。
半個小時啊大哥,我用記事本寫,不用myeclipse都不需要半個小時額...你太夸張了。你說垃圾那是事實,你可以用字節(jié)碼寫,用匯編,用二進制,主要是java簡單,好學,也方便,跨平臺。你要用匯編試試,寫個helloworld半天,所以不是java垃圾,主要是我們自己太垃圾。