程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java基礎-005,java-005

java基礎-005,java-005

編輯:JAVA綜合教程

java基礎-005,java-005


 27.Java中垃圾回收的目的及回收的時機

  垃圾回收的目的是識別並且丟棄不再使用的對象來釋放和重用資源.

  如果對象的引用被置為null,垃圾收集器不會立即釋放對象占用的內存.

  什麼時候進行垃圾回收,主要取決於JVM.可以參考 http://www.cnblogs.com/lrh-xl/p/5292495.html  

 28.System.gc()和Runtime.gc()

  這兩個方法是用來提示JVM要進行垃圾回收了.但是,立即開始還是延遲開始進行垃圾回收是取決於JVM的.

  這兩個方法的行為沒有什麼不同,本質上是一樣的.

 29.finalize()方法

  垃圾回收器決定回收某對象時,就會運行該對象的finalize()方法,但是在Java中,如果內存充足,那麼垃圾回收可能永遠不會進行,也就是說finalize()可能永遠不會被執行,顯然靠它做收尾工作是不可靠的.(何時會進行垃圾回收取決於JVM的類型,以及JVM采用何種垃圾回收算法,內存分配回收策略等).fianlize()方法的主要用途是回收特殊通道申請的內存.Java程序有垃圾回收器,所以一般情況下內存問題不用程序員擔心,但有一種JNI(Java Native Interface)調用non-Java程序(C/C++),finalize()的工作就是回收這部分內存.

 30.Java堆及永久代

  JVM的堆是運行時數據區,所有類的實例和數組都在堆上分配內存.它在JVM啟動時被創建.對象所占的內存是由自動內存管理系統,也就是垃圾回收器回收.

  堆內存是由存活和死亡的對象組成的,存活的對象是應用可以訪問的,不會被回收,死亡的對象是應用不可訪問尚且沒有被垃圾收集器回收掉的對象,一直到垃圾收集器把這些對象回收掉之前,它們會一直占據內存空間.

  了解更多關於運行時數據區可以參考http://www.cnblogs.com/lrh-xl/p/5277585.html

 31.串行收集器和吞吐量收集器的區別

  吞吐量收集器使用並行版本的新生代垃圾收集器,它用於中等規模和大規模數據的應用程序.而串行收集器對大多數的小應用(現代處理器上需要大概100M左右的內存)就足夠了.

  了解更多關於垃圾收集器可以參考http://www.cnblogs.com/lrh-xl/p/5309141.html

32.JVM的永久代的垃圾回收

  垃圾回收不會發生在永久代(不是很准確).如果永久代滿了或者是超過了臨界值們就會觸發完全垃圾回收(Full GC) 也叫Major GC.

  關於垃圾收集可以參考http://www.cnblogs.com/lrh-xl/p/5312877.html 和 http://www.cnblogs.com/lrh-xl/p/5292495.html 

33.Java中的兩種異常類型

  Java中有兩種異常:受檢查(checked)異常和不受檢查(unchecked)異常.不受檢查的異常不需要在方法或者構造函數上聲明,就算方法或者構造函數的執行可能會拋出這樣的異常,並且不受檢查的異常可以傳播到方法或者是構造函數的外面.相反,受檢查的異常必須用throws語句或者是構造函數上聲明.

34.java中的Exception和Error

  Exception和Error都是Throwable的子類.Exception用於用戶程序可以捕獲的異常情況.Error定義了不期望被用戶捕獲的異常.

35.throw和throws

  throw關鍵字用來在程序中明確地拋出異常,相反,throws語句用來表明方法不能處理的異常.每一個方法都必須要指定哪些異常不能處理,所以方法的調用者才能夠確保處理可能發生的異常,多個異常是用逗號分隔的.

36.finally代碼塊和fianlize()方法

  無論是否拋出異常,finally代碼塊都會執行,它主要是用來釋放用用程序占用的資源.

  finalize()方法是Object類的protected()方法,它是在對象被垃圾回收前由JAVA虛擬機來調用的.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved