2013-07-30 64 views
2

編譯器是否爲公共成員函數和私有成員函數分配了不同的內存區域,或者它們是否分配在同一個內存區域中?在哪裏分配(即堆,堆棧...)?成員函數的Java內存分配

我的意思是說,OOP的概念就像濫用成員函數只是在編寫代碼時和之後纔有限......我的意思是在編譯爲字節碼後,在內存表示中沒有不同,因此如果我是地方錯..

+1

這是一個奇怪的問題。你真的*試圖理解什麼? – jason

+0

從存儲的角度來看,公共功能與私人功能沒有區別。 –

+0

沒有區別。實例變量及其指向的對象存儲在堆中。 – Bnrdo

回答

0
  • 在Java成員函數存儲在堆棧

  • 實例變量,對象存儲在堆

  • 局部變量保存在棧

+0

-1:有關函數被存儲在堆棧上的部分是無稽之談;那有什麼意思? –

0

的類/方法或任何其它meta-data存儲由JVM中稱爲區域:Non-Heap Memory

對象,包括實例/類成員變量期間在堆運行時間被存儲。

其他兩個答案中的混淆會上升,因爲方法成員存儲在堆棧中,當函數在框架中運行時,一旦方法完成就會被銷燬。

+1

方法區域是堆區域的一部分..方法區域在邏輯上是堆的一部分,但Java虛擬機實現可能選擇不進行垃圾收集或壓縮。 – user2632528

+0

我不這麼認爲:http://javapapers.com/core-java/java-jvm-memory-types/ – alfasin

+0

感謝您的鏈接.. – user2632528