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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

JVM - 应用JVM核心参数推荐设置

發布時間:2025/3/21 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM - 应用JVM核心参数推荐设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • Pre
  • JDK版本
  • 核心參數
    • 線程棧
    • 方法區(元空間)
  • 棧溢出案例 StackOverflowError

Pre

JVM-08垃圾收集Garbage Collection【GC常用參數】


JDK版本

= 1.8


核心參數

‐Xms2048M ‐Xmx2048M ‐Xmn1024M ‐Xss512K ‐XX:MetaspaceSize=256M ‐XX:MaxMetaspaceSize=256M


線程棧

默認1M , 不足的話 StackOverflowError

-Xss設置越小 ,說明一個線程棧里能分配的棧幀就越少,但是對JVM整體來說能開啟的線程數會更多 ,當然了,線程多了并不一定性能就高,只是理論上是這樣的。


方法區(元空間)

-XX:MetaspaceSize=N -XX:MaxMetaspaceSize=N

【參數解讀】

  • -XX:MaxMetaspaceSize: 元空間最大值, 默認不限制, 取決于機器本身的內存
  • -XX:MetaspaceSize: 元空間的初始空間大小, 默認21M,達到該值就會觸發full gc進行類型卸載, 同時GC收集器會對該值進行調整: 如果釋放了大量的空間, 就適當降低該值; 如果釋放了很少的空間, 那么在不超過MaxMetaspaceSize的情況下, 適當提高該值的大小(類似自動擴容)。

對于64位JVM來說,元空間的默認初始大小是21MB,若不足,GC后自動擴容,無上限,取決于操作系統的內存大小。


【經驗之談】

一般建議在JVM參數中將MetaspaceSize和MaxMetaspaceSize設置成一樣的值 ,8G物理內存的機器來說,可以將這兩個參數設置為256M

如果應用啟動比較慢,可以看下是不是因為方法區的JVM參數沒有設置(默認值21 ,頻繁GC,自動擴容)導致的。


棧溢出案例 StackOverflowError

/*** ‐Xss驗證*/ public class StackOverFlowErrorTest {private static int count = 0 ;public static void main(String[] args) {try {doCall();}catch (Throwable e){e.printStackTrace();System.out.println("遞歸調用次數:" + count);}}private static void doCall() {count++;// 遞歸調用,壓入線程棧doCall();} }

默認配置 -Xss1m

java.lang.StackOverflowErrorat com.artisan.gof.test.StackOverFlowErrorTest.doCall(StackOverFlowErrorTest.java:23)........................at com.artisan.gof.test.StackOverFlowErrorTest.doCall(StackOverFlowErrorTest.java:23) 遞歸調用次數:20898

原因分析

遞歸調用導致棧溢出~


總結

以上是生活随笔為你收集整理的JVM - 应用JVM核心参数推荐设置的全部內容,希望文章能夠幫你解決所遇到的問題。

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