jvm培訓 jvm調優為什麼要把堆和棧區分出來呢

2021-10-12 12:47:38 字數 637 閱讀 3737

首先,從軟體設計的角度來看,堆疊代表處理邏輯,而堆代表資料。這種分離使處理邏輯更加清晰。分而治之的想法。隔離和模組化的想法反映在軟體設計的各個方面。

其次,堆和堆疊的分離允許堆的內容由多個堆疊共享(也可以理解為訪問同一物件的多個執行緒)。這種共享的好處很多。一方面,這種共享提供了一種有效的資料互動方式(例如共享記憶體),另一方面,所有堆疊都可以訪問堆中的共享常量和快取,從而節省了空間。

第三,由於執行時的需要(例如儲存系統操作的上下文),需要將堆疊分為位址段。由於堆疊只能向上生長,因此限制了堆疊儲存內容的能力。與堆不同,堆中的物件可以根據需要動態增長,因此,將堆疊和堆拆分可以使動態增長成為可能,並且堆中只有乙個位址需要記錄在相應的堆疊中。

第四,物件導向是堆和堆疊的完美結合。實際上,物件導向程式與先前結構化的程式之間的執行沒有區別。但是,物件導向的引入改變了對問題的思考方式,這更接近自然的思考方式。當我們反彙編物件時,您會發現物件的屬性實際上是儲存在堆中的資料。物件的行為(方法)是執行邏輯,該邏輯儲存在堆疊中。編寫物件時,實際上是編寫資料結構和處理資料的邏輯。我不得不承認,物件導向的設計確實很漂亮。

推薦閱讀:jvm培訓:如何判斷哪些物件需要**?

JVM效能調優

gc 優化的兩個目標 將進入老年代的物件數量降到最低 減少 full gc 的執行時間 gc 優化的基本原則是 將不同的 gc 引數應用到兩個及以上的伺服器上然後比較它們的效能,然後將那些被證明可以提高效能或減少 gc 執行時間的引數應用於最終的工作伺服器上。gc 優化需要考慮的 jvm 引數 型別...

JVM調優總結

堆大小設定 jvm 中最大堆大小有三方面限制 相關作業系統的資料模型 32 bt還是64 bit 限制 系統的可用虛擬記憶體限制 系統的可用物理記憶體限制。32位系統下,一般限制在1.5g 2g 64為作業系統對記憶體無限制。我在windows server 2003 系統,3.5g物理記憶體,jd...

Spark效能調優 JVM調優

通過一張圖讓你明白以下四個問題 1.jvm gc機制,堆記憶體的組成 2.spark的調優為什麼會和jvm的調優會有關聯?因為scala也是基於jvm執行的語言 3.spark中oom產生的原因 4.如何在jvm這個層面上來對spark進行調優 補充 spark程式執行時 jvm堆記憶體分配比例 r...