當前位置:編程學習大全網 - 編程語言 - java編程內存管理需要註意的問題?

java編程內存管理需要註意的問題?

大家在進行程序系統維護的時候是否因為java編程的內存管理問題而無法快速解決導致系統出錯呢?下面我們就壹起來了解和學習壹下,關於java編程內存管理都有哪些知識點。

程序計數器(了解)

程序計數器,可以看做是當前線程所執行的字節碼的行號指示器。在虛擬機的概念模型裏,字節碼解釋器工作就是通過改變程序計數器的值來選擇下壹條需要執行的字節碼指令,分支、循環、跳轉、異常處理、線程恢復等基礎功能都要依賴這個計數器來完成。

Java虛擬機棧(了解)

Java虛擬機棧也是線程私有的,它的生命周期與線程相同。虛擬機棧描述的是Java方法執行的內存模型:每個方法在執行的同時都會創建壹個棧幀用於存儲局部變量表、操作數棧、動態鏈表、方法出口信息等。每壹個方法從調用直至執行完成的過程,就對應著壹個棧幀在虛擬機棧中入棧到出棧的過程。

局部變量表中存放了編譯器可知的各種基本數據類型(boolean、byte、char、short、int、float、long、double)、對象引用和returnAddress類型(指向了壹條字節碼指令的地址)。

如果擴展時無法申請到足夠的內存,就會拋出OutOfMemoryError異常。

本地方法棧(了解)

本地方法棧與虛擬機的作用相似,不同之處在於虛擬機棧為虛擬機執行的Java方法服務,而本地方法棧則為虛擬機使用到的Native方法服務。有的虛擬機直接把本地方法棧和虛擬機棧合二為壹。

會拋出stackOverflowError和OutOfMemoryError異常。

Java堆

堆內存用來存放由new創建的對象實例和數組。(重點)

Java堆是所有線程***享的壹塊內存區域,在虛擬機啟動時創建,此內存區域的目的就是存放對象實例。

Java堆是垃圾收集器管理的主要區域。java課程培訓機構發現由於現在收集器基本采用分代回收算法,所以Java堆還可細分為:新生代和老年代。從內存分配的角度來看,線程***享的Java堆中可能劃分出多個線程私有的分配緩沖區(TLAB)。

  • 上一篇:javaweb程序員求職的幾點建議
  • 下一篇:pascal語言編程十萬火急
  • copyright 2024編程學習大全網