最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JVM內存參數配置詳解

 更新時間:2022年02月21日 09:23:56   作者:QH.Thomas  
本文主要介紹了JVM內存參數配置詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

首先我們知道:JVM發(fā)生內存錯誤的類型

1、堆內存泄漏:OutOfMemory:Java heap space

此種內存泄漏,增加內存,只能暫時解決問題,并不能根治問題。必須要優(yōu)化代碼,一定是代碼的問題:排查堆中的大量對象,就會發(fā)現(xiàn),這些對象都被引用,對象不能及時被回收,導致超出了堆的設定最大內存。

2、老年代內存泄漏:OutOfMemoryError:PermGen space

類名、訪問修飾符、字段描述、方法描述等,所占空間大于永久代最大值,就會出現(xiàn),一般都是初始化內存的時候,空間太小,解決辦法是擴大空間

3、棧內存泄漏:StackOverflowError

代碼執(zhí)行時,代碼進棧,此刻如果棧的內存不足以容納要進棧的代碼的大小空間,那么久會報該錯誤??梢酝ㄟ^設置棧的空間大小。一般通過:-Xss設置線程的大小來解決。比如:-Xss256m

下面進入如何檢測jvm內存情況的實際操作:

1、監(jiān)控JVM的GC情況:

jstat -gcutil pid 2000 20 (只需要看O,如果達到100%,并且長期處于100%,則代表老年代內存不足)

pid:服務進程的pid,可通過:ps -ef | grep java 來查看java的服務進程pid

2000:每隔多少秒進行監(jiān)控一次。這里是2秒

20: 總共獲取20次

E:eden區(qū)
O:老年代
P:永久代
YGC:新生代的GC次數
YGCT:當前統(tǒng)計的YGC一共花費的時間(毫秒)
FGC:fullGC老年代的GC次數
FGCT:當前統(tǒng)計的FGC一共花費的時間(毫秒)
GCT:YGC+FGC

2、查看jvm配置信息

jmap -head pid //可以看到java進程的堆的配置信息,各區(qū)的空間大小和配置信息

?

3、查看jvm中類和對象的占用情況

jmap -histo 5279 | head -20 //查看jvm中各個類的實例數、占用內存數量以及類的全名

?

4、上面使我們的基本命令使用,那么我們怎么預測或者說內存泄漏會有什么征兆?

1、tps出現(xiàn)大幅波動,并慢慢降低,甚至降為0,響應時間隨之波動,慢慢升高
2、通過jstat命令看到,Jvm中Old區(qū)不斷增加,F(xiàn)ullGC非常頻繁,對應的FullGC消耗的時間也不斷增加
3、通過jconsole/jvisualvm可以看到,堆內存曲線不斷上升,接近上限時,變成一條直線
4、日志報錯java.lang.OutOfMemoryError: Java heap space

5、內存泄露怎么定位?

(1、確定征兆: 現(xiàn)象方面,Java進程拋出OOM異常,分析屬于那種異常,是正常的內存資源耗盡還是內存泄漏。

(2、監(jiān)控jvm的GC情況: jstat -gcutil pid 1000 100 (只需要看O,如果達到100%,并且長期處于100%,則代表老年代內存不足) 如果有大量的FGC就要查詢是否有內存泄漏的問題了

(3、通過jmap命令:jmap -histo pid | head -20,查看當前堆內存中實例數和占用內存最多的前20個對象

(4、通過jvisualvm分析定位:進行遠程堆dump,然后把dump文件下載下來,用jvisualvm打開進行分析,可以看到更直觀的jvm中對象的信息

6、下面是進行最后的JVM參數調優(yōu):

vm常用參數
---------------------------------------
堆內存 = 年輕代+老年代
年輕代 = Eden+Survivor
Survivor = From Space+To Space
---------------------------------------
年輕代 = Eden+From Space+To Space
堆內存=Eden+From Space+To Space+老年代
====================================

-Xms2048m:初始堆大小,建議<物理內存的1/4,默認值為物理內存的1/64

-Xmx2048m:最大堆大小,建議與-Xms保持一致,默認值為物理內存的1/4

-Xmn512m:新生代大小,建議不超過堆內存的1/2-Xss256k,線程堆棧大小,建議256k

-XX:PermSize=256m:永久代初始值,默認值為物理內存的1/64

-XX:MaxPermSize=256m:永久代最大值,默認值為物理內存的1/4

-XX:SurvivorRatio=8:年輕帶中Eden區(qū)和Survivor區(qū)的比例,默認為8:1,即Eden(8),F(xiàn)romSpace(1),ToSpace(1)

-XX:MaxTenuringThreshold=15:晉升到老年代的對象年齡,每個對象堅持過一次MinorGC后對象年齡+1,默認值是15,年齡超過15進入到老年代,該參數在串行GC時有效-

XX:PretenureSizeThreshold=3145728:單位字節(jié),只對Serial和ParNew兩款收集器有效,新生代采用Parallel Scavenge GC時無效,大于這個值的對象直接在老年代進行分配

7、參數設置在哪里?

一般來說,一個服務器可能有多個java服務進行,對吧?是很多服務器都會有這種情況,那么問題來了,那我要是統(tǒng)一在jvm配置文件修改jvm參數,那么豈不是所有服務都是這個參數?所以有沒有其他辦法?

有!?。?!那就是在java進程啟動命令設置。

nohup java ${JAVA_OPT} -jar xxx.jar 2>&1&

JAVA_OPT的參數:里面參數自行看要設置什么,以及具體的參數值

JAVA_OPT="-server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=64m -XX:MaxMatespaceSize=256m"

到此這篇關于JVM內存參數配置詳解的文章就介紹到這了,更多相關JVM內存參數配置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java基本類型和包裝類型的區(qū)別

    Java基本類型和包裝類型的區(qū)別

    這篇文章主要介紹了Java基本類型和包裝類型的區(qū)別,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下
    2020-09-09
  • springboot如何通過不同的策略動態(tài)調用不同的實現(xiàn)類

    springboot如何通過不同的策略動態(tài)調用不同的實現(xiàn)類

    這篇文章主要介紹了springboot如何通過不同的策略動態(tài)調用不同的實現(xiàn)類,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • java:程序包org.springframework.boot不存在的完美解決方法

    java:程序包org.springframework.boot不存在的完美解決方法

    最近項目中運行的時候提示了"java: 程序包org.springframework.boot不存在",下面這篇文章主要給大家介紹了關于java:程序包org.springframework.boot不存在的完美解決方法,需要的朋友可以參考下
    2023-05-05
  • Java使用elasticsearch基礎API使用案例講解

    Java使用elasticsearch基礎API使用案例講解

    這篇文章主要介紹了Java使用elasticsearch基礎API使用案例講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • SpringBoot+WebSocket搭建簡單的多人聊天系統(tǒng)

    SpringBoot+WebSocket搭建簡單的多人聊天系統(tǒng)

    WebSocket是一種在單個TCP連接上進行全雙工通信的協(xié)議。這是一種比較官方的說法,簡單點來說就是,在一次TCP連接中,通信的雙方可以相互通信。這篇文章主要介紹了SpringBoot+WebSocket搭建簡單的多人聊天系統(tǒng),需要的朋友可以參考下
    2019-10-10
  • SpringMVC設置全局異常處理器的步驟

    SpringMVC設置全局異常處理器的步驟

    在項目中我們有需求做一個全局異常處理,來規(guī)范所有出去的異常信息,這篇文章主要介紹了SpringMVC設置全局異常處理器,需要的朋友可以參考下
    2024-03-03
  • Java進階必備之多線程編程

    Java進階必備之多線程編程

    今天帶大家來學習java多線程編程,文中有非常詳細的代碼示例及介紹,對正在學習java多線程的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Java編程通過匹配合并數據實例解析(數據預處理)

    Java編程通過匹配合并數據實例解析(數據預處理)

    這篇文章主要介紹了Java編程通過匹配合并數據實例解析(數據預處理),分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • java并發(fā)編程JUC CountDownLatch線程同步

    java并發(fā)編程JUC CountDownLatch線程同步

    這篇文章主要介紹CountDownLatch是什么、CountDownLatch 如何工作、CountDownLatch 的代碼例子來展開對java并發(fā)編程JUC CountDownLatch線程同步,需要的朋友可以參考下面文章內容
    2021-09-09
  • 詳解SpringBoot中自定義和配置攔截器的方法

    詳解SpringBoot中自定義和配置攔截器的方法

    今天這篇文章來介紹一下攔截器在SpringBoot中的如何自定義及如何配置的,攔截器的具體作用和應用場景,感興趣的小伙伴可以了解一下
    2022-05-05

最新評論

司法| 治县。| 健康| 永川市| 彭州市| 阳朔县| 宜都市| 淄博市| 榆树市| 南投县| 驻马店市| 达孜县| 平阴县| 巴楚县| 通辽市| 信宜市| 邯郸县| 洞头县| 苍溪县| 延庆县| 积石山| 枞阳县| 湖北省| 桂阳县| 丽江市| 藁城市| 长丰县| 宜章县| 镇巴县| 阿合奇县| 宁津县| 郓城县| 闸北区| 泰宁县| 正定县| 吐鲁番市| 望奎县| 山东| 四会市| 友谊县| 嘉兴市|