首頁>Club>
6
回覆列表
  • 1 # 檸檬愛旅遊

    程式語言和自然語言類似,都是為了交流,自然語言用於跟人交流,程式語言則用於指示機器。jvm其實也就是一個程式,這個程式能接受你的Java程式碼,然後根據你的意願執行一系列操作。舉個例子,你可以寫一個這樣的程式,這個程式接受使用者輸入一句話,如果使用者輸入“beep”則呼叫機器的鳴叫,如果使用者輸入“exit”,則關掉本程式。在這個例子中,其實使用者寫的“beep”和“exit”就充當了程式語言的角色,只不過這門語言過於簡單因此不可能普及。而java則具有完善的體系能夠支援你表達任何意願,然後jvm理解你的java語言並執行相應操作,這就是程式語言的原理。當然java還有最佳化的方案,它的編譯器將你的java語言翻譯成位元組碼,因為jvm執行位元組碼的速度比直接理解java程式碼要快很多,後來的版本還引入了JIT技術,實時將位元組碼再編譯成機器碼,這樣就能讓機器直接執行指令而不需要jvm去解釋。至於垃圾收集器,就是jvm維護著每一個物件的引用(可以理解成C++裡面的指標),根據一定的演算法判斷其是否可達,如果這個引用不可達(也就是程式的後續部分已經無法獲取這個引用,比如說已超出block範圍了)那麼就清除這個記憶體物件。這樣的好處是能避免由於程式設計師的疏忽引起的記憶體洩露,缺點是記憶體的清理不夠即時,因而無用的物件常常會佔據記憶體很長時間。你也可以在C++裡實現垃圾回收器,思路是寫一個用於管理記憶體的類,然後程式裡不再用new來新建物件,而是用這個類來產生物件,類內部擁有這個物件的指標,並在適當的時候delete它,這樣就實現垃圾自動回收了,當然要寫這樣一個類是很困難的事。

  • 中秋節和大豐收的關聯?
  • nomo相機怎麼使用?