哈 我又來了
我現在是用Visual VM 觀察JAVA 程序
這次想問的問題是有關記憶體計算部分
我附上兩張圖
(1)
![]()
(2)
![]()
第一張圖可以看到 Heap Size 約為 470MB
第二章圖可以看到 永生代 Size 為 62MB
問題來了
1. 我用ps -Lo pid,ppid,pgid,nlwp,lwp,stat,%mem -p <pid>
來看 %MEM 為 16.7% ,加上free指令,記憶體耗用約為 675MB
想請問 470 + 62 < 675 ,是因為還有其他未算到的部分嗎?
2. 第一張圖可以看到 Heap Size 約在 470MB 然後 Used 約在 50 ~ 200MB
這部分感覺 Size 可以再往下降,這樣是不是系統就可以多一些記憶體能用
但這部分跟 JVM 本身的演算法有關就是了
3. 第一張圖的 1/3 那邊有看到 Size 往下降一大部分,但是我在 server實際去查
,照我第一點那樣查,發現 Process 也沒有釋放那些的記憶體,那那塊降下來
的記憶體跑去哪了??
4. 這是一台webmail process,在下午時候連線較多,我在早上時候觀察時,有發現
在 minor gc 的頻率較下午高,約5分鐘 2~3次,下午大概 5分鐘1次,這部分是不是
和 jvm 擁有了較多的 Heap Size 有關,因為 allocate 較多 heap size 所以可以累積
到較多的量再做 GC,這部分似乎是我的 Process 占用記憶體越飆越高的原因,這邊不知道
能不能調整。
感謝閱讀,明天繼續觀察 ヾ(○’▽‘○)ノ