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(沒有申請到足夠的內存)