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課程培訓機構http://www.kmbdqn.cn/發現由於現在收集器基本採用分代回收演算法,所以Java堆還可細分為:新生代和老年代。
從內存分配的角度來看,線程共享的Java堆中可能劃分出多個線程私有的分配緩沖區(TLAB)。
『貳』 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課程培訓機構http://www.kmbdqn.com/發現由於現在收集器基本採用分代回收演算法,所以Java堆還可細分為:新生代和老年代。從內存分配的角度來看,線程共享的Java堆中可能劃分出多個線程私有的分配緩沖區(TLAB)。
『叄』 一個開發java的人需要多大內存
最少是4G。
分析:
java開發需要安裝jdk、eclipse、oracle等軟體;
java運行需要tomcat 、JVM和程序的運行內存;
以上的這些軟體基本都運行起來的話,大概需要2G多內存,而電腦本身還需要一部分,所以最低配置也得4G,建議開發用6G或者是8G。