JavaRuntime內存 && Java整數類型和取值範圍

Java整數類型和取值範圍

二進制

十進制

二進制單位

十進制單位

10的次方數

單位的英語表示

20

B

1

1個

100

units digit

28

B

256

2百

102

Byte

210

KB

1 024

1千

103

thousand

216

KB

65536

64*KB

6萬

104

Short

220

MB

1 048 576

1百萬

106

million

230

GB

1 073 741 824

10億

109

Billion

232

GB

4294967296

4*GB

40億

109

Int

240

TB太

1099511627776

1

1012

萬億

250

PB拍

1125899906842620

1千兆

1015

千*萬億

260

EB艾

1152921504606850000

1.15百

1018

京 = 一億個億

264

EB

18446744073709600000

16*EB

1.8千京

1019

Long

Java運行時內存

1.     PC寄存器(program counter)

a)      每條線程都有一個PC寄存器

b)      用於保存“該線程的當前執行方法”的字節碼指令地址(非Native方法)、或undefined(Native方法)

2.     Java虛擬機棧(Java Virtual Machine stack)

a)      每一條線程都有自己的私有棧,棧與線程同時創建

b)      用於存儲局部變量、正在計算的中間結果、方法調用與返回結果

c)      可能異常:StackOverflowError(線程請求分配的棧容量超過最大值)、OutOfMemoryError(沒有申請到足夠的內存)

3.     Java堆(Java Heap)

a)      JVM啓動的時候被創建,供各個線程共享

b)      存儲:類實例、數組對象。

c)      有自動內存管理系統(automatic storage managerment system),也就是garbagecollector(垃圾收集器)

d)      可能異常:OutOfMemoryError(所需的堆超過自動內存管理系統能提供的最磊容量)

4.     方法區(method area)

a)      JVM啓動的時候被創建,供各個線程共享

b)      存儲類的結構信息:運行時常量池、字段和方法數據、構造函數和普通方法的字節碼內容、(類、實例、接口初始化時的)特殊方法。

c)      有異常:OutOfMemoryError(方法區空間不能滿足內存分配請求)

5.     運行時常量池(runtime constant pool)

a)      在方法區中分配空間,會在加載類和接口到虛擬機時創建

b)      是class文件中每一個類或接口的常量池表(constant_pooltable)的運行時表示形式

c)      存儲:編譯期可知的數值字面量、運行期解析獲得的方法或字段引用

d)      可能異常:OutOfMemoryError(創建類或接口時,需要構造此空間的容量超過了方法區能提供的最大值)

6.     本地方法棧(native method stack)

a)      每一個線程都有本地方法棧(如果JVM支持)

b)      是傳統的棧,用來支持native方法

c)      可能異常:StackOverflowError(線程請求分配的棧容量超過允許的最大值)、OutOfMemoryError(沒有申請到足夠的內存)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章