最近,我一直在閱讀有關Java中的內存分配方案的大量文章,并且由于我從各種來源中進行了閱讀,所以存在很多疑問。我已經收集了我的概念,并要求仔細閱讀所有要點并對其進行評論。我知道內存分配是特定于JVM的,因此我必須事先說,我的問題是特定于Sun的。類(由類加載器加載)放在堆上的特殊區域中:永久生成與類相關的所有信息,例如類的名稱,與該類關聯的對象數組,JVM使用的內部對象(例如java / lang / Object)以及優化信息,都進入了“永久生成”區域。所有靜態成員變量將再次保留在永久生成區域中。對象放在不同的堆上:年輕的一代每個類每個方法只有一個副本,該副本是靜態的還是非靜態的。該副本將放置在“永久生成”區域中。對于非靜態方法,所有參數和局部變量都進入堆棧-每當對該方法進行具體調用時,我們都會獲得一個與之關聯的新堆??蚣?。我不確定靜態方法的局部變量存儲在哪里。他們在永世一代的堆上嗎?或者只是它們的引用存儲在“永久生成”區域中,而實際副本位于其他位置(在哪里?)我也不確定方法的返回類型存儲在哪里。如果對象(年輕一代)需要使用靜態成員(永久一代),則為它們提供對靜態成員的引用&&為它們提供足夠的存儲空間以存儲方法的返回類型等。謝謝你的經歷!
添加回答
舉報
0/150
提交
取消