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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

jvm诊断与优化(3)

發布時間:2025/6/15 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jvm诊断与优化(3) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

jvm內存:如圖從左到右依次為:

[ (新生代)PSYoungGen:{?Eden\S0(form)\S1(to) } \ (老年代)ParOldGen:{?Old Memory} ] \?(方法區\持久區)Perm?

-Xms120M ? ?設置堆的初始大小120M

-Xmx120M ? ?設置堆最大的空間120M;實際最大的可用空間會比設定值小些;丟失的大小等于from/to空間;

? ? ? ? ? ? ? ? ? ? ? ? ?也就是說 最大可用空間 = Xmx值 - from/to值,少去的那部分是新生代的空間。

參數說明: ?jvm空間會盡量保持在初始大小(-Xms),除非有必要擴展堆空間,但最大不超過設定的最大小值(-Xms) 。

最好讓初始值與最大值一致。減少GC觸發的次數,提高性能

-Xmn40M ?設置新生代的大小40M(Eden+S0+S1).設置一個較大的新生代會減小老年代的大小。一般配置

? ? ? ? ? ? ? ? ? ? ? 新生代的大小為整個堆空間的1/3 到 1/4

-XX:SurvivorRatio = eden/from 用來設置新生代中eden空間和s0空間的比例

例?java -Xmx12M -Xms12M -Xmn4M -XX:SurvivorRatio=2 -XX:+PrintGCDetails ?jvm.Test 0

PSYoungGen total 3072K, used 716K [0x00000000ffc00000, 0x0000000100000000, 0x0000000100000000)eden space 2048K, 34% used [0x00000000ffc00000,0x00000000ffcb32e0,0x00000000ffe00000)from space 1024K, 0% used [0x00000000fff00000,0x00000000fff00000,0x0000000100000000)to space 1024K, 0% used [0x00000000ffe00000,0x00000000ffe00000,0x00000000fff00000) ParOldGen total 8192K, used 0K [0x00000000ff400000, 0x00000000ffc00000, 0x00000000ffc00000)object space 8192K, 0% used [0x00000000ff400000,0x00000000ff400000,0x00000000ffc00000) PSPermGen total 21504K, used 2549K [0x00000000fa200000, 0x00000000fb700000, 0x00000000ff400000)object space 21504K, 11% used [0x00000000fa200000,0x00000000fa47d570,0x00000000fb700000)

輸出說明: 新生代的最大可用空間 = Xmn值 - from/to值 = 4M - 1024K = 3072K ? ? ? ? ? ? ?

? ? ? ? ? ? ? ?新生代最大空間 = eden+s0(from)+s1(to) =?2048K+?1024K +1024K = 4M ? ?

? ? ? ? ? ? ? 老年代的最大可用空間 = Xmx值 - Xmn值 = 12M - 4M =?8192K

? ? ? ? ? ? ? 堆最大可用空間 =?Xmx值 - from/to值 = 12M -?1024K = 11M

-XX:NewRatio = 老年代/新生代 ? ? //配置老年代與新生代的比例

參數說明:新生代與老年代空間大小的分配對GC行為有很大的影響,盡可能將對象預留在新生代,減少老年代GC次數

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

jvm 的非堆內存有?持久區棧空間 和?直接空間?(jvm也可以直接用系統空間)

-XX:PermSize50M ?和 -XX:MaxPerSize50M ?配置持久區的初始空間與最大空間50MB(jdk6 jdk7)

提示:jdk8中持久區已經算到系統空間中了,即系統內存有多少它就能用多少不受限。但依然可用-XX:MaxMetaspaceSize指定最大使用空間

-Xss10M ?指定線程最大棧空間為10MB(說明見1章)

-XX:MaxDirectMemorySize ? 最大可使用的直接內存空間,默認為Xmx值

參數說明:當前直接內存達到最大值時GC就會回收。如不能回收還是會發生內存溢出,直接內存的讀寫速度會比堆內存快40%,

但申請內存空間這方面對堆內存操作的速度遠遠高于直接內存。所以直接內存適合申請次數少訪問頻繁的場合。

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

當程序運行空間超過jvm的內存就是拋出OutOfMemoryError異常,即OOM

package jvm; import java.util.ArrayList; import java.util.List;public class Test2 {public static void main(String[] args) {List<Object> container = new ArrayList<Object>();int length = Integer.parseInt(args[0]);for (int i = 0; i < length; i++) {container.add(new byte[1*1024*1024]);}} }

?-XX:+HeapDumpOnOutOfMemoryError ?在內存溢出時導出整個堆的信息

?-XX:HeapDumpPath ?指定導出堆的存放路徑,配合HeapDumpOnOutOfMemoryError 使用

例?java -Xmx20M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=E:/a.dump jvm.Test2 30

java.lang.OutOfMemoryError: Java heap space Dumping heap to E:/a.dump ... Heap dump file created [18974861 bytes in 0.061 secs] Exception in thread "main" java.lang.OutOfMemoryError: Java heap spaceat jvm.Test2.main(Test2.java:11) a.dump 這個文件可以使用MAT工具打開

-XX:OnOutOfMemoryError ?在發生溢出錯誤時執行一個腳本文件,用于自救,通知等

例:?java -Xmx20M "-XX::OnOutOfMemoryError=E:/printstack.bat %p" -XX:+HeapDumpOnOutOfMemoryError ?jvm.Test2 30

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

最后虛擬機的工作模式 Client 和 Server

-client ? 指定client 工作模式

-server 指定server 工作模式;啟動慢但執行速度遠快于client模式。一般都是server模式工作的

java -version?查看當前模式

java -version java version "1.7.0_75" Java(TM) SE Runtime Environment (build 1.7.0_75-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.75-b04, mixed mode) //當前為server模式

參數說明:默認情況下jvm會自動根據系統選擇。


轉載于:https://my.oschina.net/u/2552286/blog/664317

總結

以上是生活随笔為你收集整理的jvm诊断与优化(3)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。