zzh

zzh

JVM本地內存

概念#

本地內存 = 直接內存 + 元空間

直接內存#

  • 概念:直接內存不是虛擬機運行時數據區的一部分,直接內存是在 Java 堆外地、直接向系統申請的內存區域。直接內存使用 NIO,通過存在堆中的 DirectByteBuffer 操作 Native 內存,所以讀寫性能高。
  • 原因:直接內存是一塊物理內存,專門用於 JVM 和 IO 設備打交道。因為 JVM 是基於自動垃圾回收機制運行的,所有內存中的數據會在 GC 時不停的被移動,如果你調用系統 API 告訴操作系統將內存某某位置的內存寫入磁盤,而此時發生 GC 移動了該部分數據,GC 結束後操作系統是不是就寫錯數據了。

元空間#

  • 概念:在 JDK1.8 開始才出現元空間的概念,之前叫方法區 / 永久代。存儲被加載的類信息、常量、靜態變量、常量池、即時編譯後的代碼等數據。

工作內存與本地內存#

JMM 中每一個線程都有一個自己的工作內存用於存儲 jvm 內存中的共享變量,每一個線程只能對自己工作內存中的變量進行操作。工作內存是一個抽象的概念,不是真正的內存,而是 CPU 寄存器與緩存。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。