【JVM】调优笔记1-----堆栈概念的对碰
關于JVM的工作原理以及調優是一個向往已久的模塊,終于有幸接觸到:http://pengjiaheng.iteye.com/blog/518623
那就順著這個思路,來梳理一下自己看到后的結論和感想。
?
首先,墊些基礎,下面會用到
1.Java基本數據類型的長度
| 類型 | 字節 | 表示范圍 | 包裝類 |
| 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.html
具體的一個字符是幾個字節,就要看具體的編碼方式了,可以看看上面這個詳細的解釋!
這里只需要清楚,上面基本數據類型,例如:short是2個字節的長度,一個字節是8bit(位),那2個字節就是16位,也就是short能表示的數據范圍是(2^16)-1次方也就是65536-1的范圍內,也就是-32768-32767
?
3.java中值傳遞和參數傳遞的問題
正好之前一段時間有http://www.cnblogs.com/sxdcgaq8080/p/7093462.html
可以作為參考
?
?
接著
談談主題,堆與棧的概念(參考:http://pengjiaheng.iteye.com/blog/518623)
1.?棧是運行時的單位,而堆是存儲的單位。
??? 棧解決程序的運行問題,即程序如何執行,或者說如何處理數據;堆解決的是數據存儲的問題,即數據怎么放、放在哪兒。
??? 在Java中一個線程就會相應有一個線程棧與之對應,這點很容易理解,因為不同的線程執行邏輯有所不同,因此需要一個獨立的線程棧。而堆則是所有線程共享的。棧因為是運行單位,因此里面存儲的信息都是跟當前線程(或程序)相關信息的。包括局部變量、程序運行狀態、方法返回值等等;而堆只負責存儲對象信息。
?
2.堆中存什么?棧中存什么?
??? 堆中存的是對象。
棧中存的是基本數據類型和堆中對象的引用。
一個對象的大小是不可估計的,或者說是可以動態變化的,但是在棧中,一個對象只對應了一個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異常。常見的出現這個異常的是無法返回的遞歸,因為此時棧中保存的信息都是方法返回的記錄點。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
主體參考:http://pengjiaheng.iteye.com/blog/518623
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的【JVM】调优笔记1-----堆栈概念的对碰的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PC市场连续5年滑坡,但对惠普戴尔来说是
- 下一篇: 大数据导出报错