1. 程式人生 > >JVM記憶體(執行時資料區)和直接記憶體 概念

JVM記憶體(執行時資料區)和直接記憶體 概念

JVM記憶體分為5塊,其中1--3為執行緒隔離,4、5為執行緒共享。

執行緒隔離:

1、程式計數器:分支,迴圈跳轉、異常處理、執行緒恢復等作用(唯一一個沒有規定outofmemoryError的記憶體區)。

2、VM stack,虛擬機器棧:主要用來存放區域性變量表(八種基本資料型別,物件引用也就是物件地址)。

3、本地方法棧:與VM stack相似,但不同的是VM stack為JVM執行java方法服務,本地方法棧為JVM執行Native方法服務。

執行緒共享:

4、堆:存放物件例項(垃圾收集器管理的主要區域,也叫GC堆)。

5、方法區:儲存已經被載入的類資訊、常量、靜態變數等。

直接記憶體概念:

    不是JVM執行時記憶體,也不是JVM定義的記憶體區域,就是堆外單獨的一塊記憶體區域。

    例如:NIO(new input/output),基於通道與緩衝區結合的I/O方式,可以用native函式庫直接堆外分配記憶體,通過一個存                儲在堆中的DirectByteBuffer物件作為這塊記憶體的引用進行操作,這樣能在一些場景中提高效能。