關於JVM的工做原理以及調優是一個嚮往已久的模塊,終於有幸接觸到:http://pengjiaheng.iteye.com/blog/518623html
那就順着這個思路,來梳理一下本身看到後的結論和感想。java
首先,墊些基礎,下面會用到編碼
1.Java基本數據類型的長度spa
類型 | 字節 | 表示範圍 | 包裝類 |
byte(字節型) | 1 | -128~127 | Byte |
short(短整型) | 2 | -32768~32767 | Short |
int(整型) | 4 | -2147483648~2147483647 | Integer |
long(長整型) | 8 | -9223372036854775808 ~ 9223372036854775807 | Long |
float(浮點型) | 4 | -3.4E38~3.4E38 | Float |
double(雙精度型) | 8 | -1.7E308~1.7E308 | Double |
char(字符型) | 2 | 從字符型對應的整型數來劃分,其表示範圍是0~65535 | Charater |
booealn(布爾型) | 1 | true或false | Boolean |
2.解釋【位-字節-字符】概念線程
關於編碼方式和一個字符幾個字節的詳細解釋:http://www.cnblogs.com/God-/p/6006749.htmlhtm
具體的一個字符是幾個字節,就要看具體的編碼方式了,能夠看看上面這個詳細的解釋!對象
這裏只須要清楚,上面基本數據類型,例如:short是2個字節的長度,一個字節是8bit(位),那2個字節就是16位,也就是short能表示的數據範圍是(2^16)-1次方也就是65536-1的範圍內,也就是-32768-32767blog
3.java中值傳遞和參數傳遞的問題遞歸
正好以前一段時間有http://www.cnblogs.com/sxdcgaq8080/p/7093462.html接口
能夠做爲參考
接着
談談主題,堆與棧的概念(參考:http://pengjiaheng.iteye.com/blog/518623)
棧解決程序的運行問題,即程序如何執行,或者說如何處理數據;堆解決的是數據存儲的問題,即數據怎麼放、放在哪兒。
在Java中一個線程就會相應有一個線程棧與之對應,這點很容易理解,由於不一樣的線程執行邏輯有所不一樣,所以須要一個獨立的線程棧。而堆則是全部線程共享的。棧由於是運行單位,所以裏面存儲的信息都是跟當前線程(或程序)相關信息的。包括局部變量、程序運行狀態、方法返回值等等;而堆只負責存儲對象信息。
堆中存的是對象。
棧中存的是基本數據類型和堆中對象的引用。
一個對象的大小是不可估計的,或者說是能夠動態變化的,可是在棧中,一個對象只對應了一個4btye的引用(堆棧分離的好處)。
3.爲何不把基本類型放堆中呢?
上面有基本數據類型的大小,佔用的空間通常是1~8個字節——須要空間比較少,並且由於是基本類型,因此不會出現動態增加的狀況——長度固定,所以棧中存儲就夠了
4.本地方法
這裏既然說到了本地方法棧,就簡單了介紹一下本地方法
簡單地講,一個Native Method就是一個java調用非java代碼的接口。一個Native Method是這樣一個java的方法:該方法的實現由非java語言實現,好比C。
具體參考:http://www.cnblogs.com/langtianya/p/3459647.html
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
後話:
堆和棧中,棧是程序運行最根本的東西。程序運行能夠沒有堆,可是不能沒有棧。而堆是爲棧進行數據存儲服務,說白了堆就是一塊共享的內存。不過,正是由於堆和棧的分離的思想,才使得Java的垃圾回收成爲可能。
Java中,棧的大小經過-Xss來設置,當棧中存儲數據比較多時,須要適當調大這個值,不然會出現java.lang.StackOverflowError異常。常見的出現這個異常的是沒法返回的遞歸,由於此時棧中保存的信息都是方法返回的記錄點。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------