日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【JVM】调优笔记1-----堆栈概念的对碰

發(fā)布時間:2025/3/18 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【JVM】调优笔记1-----堆栈概念的对碰 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

關(guān)于JVM的工作原理以及調(diào)優(yōu)是一個向往已久的模塊,終于有幸接觸到:http://pengjiaheng.iteye.com/blog/518623

那就順著這個思路,來梳理一下自己看到后的結(jié)論和感想。

?

首先,墊些基礎(chǔ),下面會用到

1.Java基本數(shù)據(jù)類型的長度

類型字節(jié)表示范圍包裝類
byte(字節(jié)型)1-128~127Byte
short(短整型)2-32768~32767?Short
int(整型)4-2147483648~2147483647Integer
long(長整型)8-9223372036854775808 ~ 9223372036854775807Long
float(浮點型)4-3.4E38~3.4E38Float
double(雙精度型)8-1.7E308~1.7E308Double
char(字符型)2從字符型對應(yīng)的整型數(shù)來劃分,其表示范圍是0~65535?Charater
booealn(布爾型)1true或falseBoolean

2.解釋【位-字節(jié)-字符】概念

關(guān)于編碼方式和一個字符幾個字節(jié)的詳細解釋:http://www.cnblogs.com/God-/p/6006749.html

具體的一個字符是幾個字節(jié),就要看具體的編碼方式了,可以看看上面這個詳細的解釋!

這里只需要清楚,上面基本數(shù)據(jù)類型,例如:short是2個字節(jié)的長度,一個字節(jié)是8bit(位),那2個字節(jié)就是16位,也就是short能表示的數(shù)據(jù)范圍是(2^16)-1次方也就是65536-1的范圍內(nèi),也就是-32768-32767

?

3.java中值傳遞和參數(shù)傳遞的問題

正好之前一段時間有http://www.cnblogs.com/sxdcgaq8080/p/7093462.html

可以作為參考

?

?

接著

談?wù)勚黝},堆與棧的概念(參考:http://pengjiaheng.iteye.com/blog/518623)

1.?棧是運行時的單位,而堆是存儲的單位

??? 棧解決程序的運行問題,即程序如何執(zhí)行,或者說如何處理數(shù)據(jù);堆解決的是數(shù)據(jù)存儲的問題,即數(shù)據(jù)怎么放、放在哪兒。

??? 在Java中一個線程就會相應(yīng)有一個線程棧與之對應(yīng),這點很容易理解,因為不同的線程執(zhí)行邏輯有所不同,因此需要一個獨立的線程棧。而堆則是所有線程共享的。棧因為是運行單位,因此里面存儲的信息都是跟當前線程(或程序)相關(guān)信息的。包括局部變量、程序運行狀態(tài)、方法返回值等等;而堆只負責存儲對象信息。

?

2.堆中存什么?棧中存什么

??? 堆中存的是對象。

 棧中存的是基本數(shù)據(jù)類型和堆中對象的引用。

  一個對象的大小是不可估計的,或者說是可以動態(tài)變化的,但是在棧中,一個對象只對應(yīng)了一個4btye的引用(堆棧分離的好處)。

?

?3.為什么不把基本類型放堆中呢?

  上面有基本數(shù)據(jù)類型的大小,占用的空間一般是1~8個字節(jié)——需要空間比較少,而且因為是基本類型,所以不會出現(xiàn)動態(tài)增長的情況——長度固定,因此棧中存儲就夠了

?

?

?

?

?

4.本地方法

這里既然說到了本地方法棧,就簡單了介紹一下本地方法

簡單地講,一個Native Method就是一個java調(diào)用非java代碼的接口。一個Native Method是這樣一個java的方法:該方法的實現(xiàn)由非java語言實現(xiàn),比如C。

具體參考:http://www.cnblogs.com/langtianya/p/3459647.html

?

?

?

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

后話:

堆和棧中,棧是程序運行最根本的東西。程序運行可以沒有堆,但是不能沒有棧。而堆是為棧進行數(shù)據(jù)存儲服務(wù),說白了堆就是一塊共享的內(nèi)存。不過,正是因為堆和棧的分離的思想,才使得Java的垃圾回收成為可能。

Java中,棧的大小通過-Xss來設(shè)置,當棧中存儲數(shù)據(jù)比較多時,需要適當調(diào)大這個值,否則會出現(xiàn)java.lang.StackOverflowError異常。常見的出現(xiàn)這個異常的是無法返回的遞歸,因為此時棧中保存的信息都是方法返回的記錄點。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

主體參考:http://pengjiaheng.iteye.com/blog/518623

?

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的【JVM】调优笔记1-----堆栈概念的对碰的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。