[JAVA]有關java之OutOfMemory檢測等相關問題文章整理

有關java之OutOfMemory檢測等相關問題文章整理

關於JVM

1
2
3
4
-Xms = 初始值,預設是實體記憶體的1/64
-Xmx = 最大值,預設是實體記憶體的1/4
-Xmn = 最小值
預設空餘堆記憶體小於40%時,JVM 就會增大堆直到-Xmx 的最大限制。

調整JVM

可以透過以下的參數來修改它,不過應該不要刻意去加大給它的分配記憶體,因為遇到需要大量的請求不多,
怕造成記憶體的浪費,應該是從程式面下手修正程式效能(又是一課題了Orz)。

  • 開發時 IDE 設定
1
2
IDE JAVA_OPTS="-Xmx900m -Xms900m"

調整JVM參數說明

關於OutOfMemoryError追查

專案出現記憶體溢位的原因及解決方案
重點:

  1. 修改JVM啟動引數,直接增加記憶體。(-Xms,-Xmx引數一定不要忘記加。)
  2. 檢查錯誤日誌,檢視“OutOfMemory”錯誤前是否有其它異常或錯誤。
  3. 對程式碼進行走查和分析,找出可能發生記憶體溢位的位置。
  4. 使用記憶體檢視工具動態檢視記憶體使用情況
    1. Eclipse開啟Show Heap Status
    2. IntelliJ IDEA 可開啟Memory Indicator & debugger Memory頁籤
      (可參考下方檢測工具@IDEA標題)

程式面與錯誤訊息範例


檢測工具@IDEA

IntelliJ IDEA 可開啟Memory Indicator & debugger Memory頁籤
(可參考說明開啟:
show-heap-memory-size-in-intellij
Analyze objects in the JVM heap)


使用jvm監控工具命令

一般用於檢視服務執行時狀態的主要命令包括:jstat、jmap、top、jstack

[JAVA]有關java之OutOfMemory檢測等相關問題文章整理

https://minilabmemo.github.io/2020/11/14/java-jvm-memory/

作者

Mini Lab Memo

發表於

2020-11-14

更新於

2023-02-16

許可協議

評論