jvm 學習

java分存分配


-Xmx 最大堆內存。最大堆內存是指新生代和老年代的大小之和的最大值 

-Xms 最小堆內存。也就是JVM啓動時,所佔據的操作系統內存大小。


java程序在運行時,首先會被分配-Xms指定的內存大小。並儘可能嘗試在這個空間段內運行程序。當-Xms指定的內存大小無法滿足應用程序時。JAM纔會向操作系統申請更多的內存,直到內存達到-Xmx珠最大內在爲止。  若超出-Xmx的值。拋出OutOfMemoryError異常。


-Xmn 用於設置新生代大小。設置一個較大的新生代會減小老年代的大小。  這個參數對系統性能以及GC行爲有很大的影響。新生代一般爲整個堆空間的 1/4 到 1/3 左右。

-XX:NewSize 用於設置新生代的初始大小, -XX:MAXNewSize 設置新生代最大值。  只設置-Xmn的效果等同於設置了相同的 -XX:NewSize 和 -XX:MAXNewSize。

若設置不同的-XX:NewSize和-XX:MAXNewSize可能會導致內存震盪,從而產生不必要的系統開銷。


-XX:MaxPermSize 可以設置持久代的最大值,-XX:PermSize 可以調協持久代的初始大小。 持久代的大小直接決定了系統可以支持多少個類定義和多少常量 。

一般來說MaxPermSize調置爲64M 已經可以滿足絕大部分應用程序正常工作。如果依然出現永久區溢出。可以調爲128.  還不能滿足,則應該考慮優化系統的設計。


-Xss 參數設置線程棧。在線程中進行局部變量分配,函數調用時,都需要在棧中開闢空間。



字節碼運行的兩種方式


解釋運行:解釋運行以解釋方式運行字節碼,解釋執行的意思是“讀一句執行一句”

編譯運行(JIT):將字苊碼編譯成機器碼,直接執行機器碼,運行時編譯,編譯後性能有數量級的提升(保守估計差10倍以上)






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