Java基础11
2019獨角獸企業重金招聘Python工程師標準>>>
1、Java是平臺獨立性語言
平臺獨立性是指可以在一個平臺上編寫和編譯程序,而在其他平臺上運行。保證Java具有平臺獨立性的機制為“中間碼”和“Java虛擬機(Java Virtual Machine)”。Java程序編譯后不是生成能在硬件平臺上可執行的代碼而是生成“中間碼”。不同硬件平臺上會安裝不同的JVM,由JVM負責把“中間碼”翻譯成硬件平臺能執行的代碼,因此能看出JVM不是平臺獨立的,是與硬件平臺相關的。
解釋執行分三步進行:代碼的裝入、代碼的校驗和代碼的執行,裝入代碼的工作由“類加載器”完成,裝入的代碼由字節碼校驗器進行檢查。
Java字節碼的執行分兩種方式:
1)解釋執行指解釋器通過每次解釋執行一小段代碼來完成Java字節碼程序的所有操作。
2)即時編譯方式,解釋器現將字節碼編譯成機器碼,再執行該機器碼。
Java平臺
包含兩個模塊:JVM和Java API。JVM是一個虛構出來的計算機,用來把Java編譯成的中間代碼轉換為機器可以識別的編碼并運行。有自己完善的硬件架構,如處理器、堆棧、寄存器等,還具有相應的指令系統,它屏蔽了與具體OS相關的信息,使Java程序只需生成在JVM上運行的目標代碼(即字節碼)就可以在多種平臺上順利運行。每當一個java程序運行時,都會有一個對應的JVM實例。當程序運行結束后,這個JVM才會退出。JVM實例通過調用類的main()方法來啟動一個Java程序。
2、GC(Garbage Collection)垃圾回收
自動檢測對象的作用域,把不再使用的存儲空間釋放掉。垃圾回收器需要完成三個任務:分配內存、確保被引用對象的內存不被錯誤的回收、回收不再被引用的對象的內存空間。
垃圾回收器使用有向圖來記錄和管理堆內存中的所有對象,通過有向圖來識別哪些對象是“可達的(有引用變量引用它)”,哪些是不可達的。
3、內存泄漏
Java中的內存泄漏主要指一個不再被程序使用的對象或變量還在內存中占有存儲空間。
引起內存泄漏的幾個原因:
1)靜態集合類,如HashMap和Vector,若為static,他們的生命周期與程序一致,那么容器中的對象在程序結束之前不能被釋放
2)各種連接,如數據庫連接、網絡連接、IO連接等,只有連接被關閉后才會回收,若不顯式的關閉會造成對象無法被回收。
3)監聽器,在釋放對象的時候往往沒有刪除相應的見同期
4)變量的不合理作用域,變量的作用域大于其使用范圍,還有未及時的將對象置為null
4、Java中的堆和棧
都是存放數據的地方。棧內存主要存放基本數據類型和引用變量;堆內存存放運行時創建的對象
A?a?=?new?A();//a放在棧中,?new?A()放在堆中?
轉載于:https://my.oschina.net/doudoulee/blog/672481
總結
- 上一篇: app开发流程
- 下一篇: Leetcode题目:Range Sum