生产如何观测 java 内存的真实使用情况, 比如其它的语言 go, C, python... 占用情况操作系统会真实反映出来, 但 java 的真实情况被一层虚拟机屏蔽了
比如有多个应用 -xms 16g -xmx 16g
, 我要怎么知道哪些实际只需要 1g, 哪些需要更多呢, 尝试使用 jmx_exporter 内存趋势也看不出来什么, 有些看上去线性的涨到最高, 然后马上下降(可能是 GC?), 有些完全没规律.
有什么技巧可以简单有效的观测真实内存需要, 麻烦分享下
1
liprais 3 小时 46 分钟前 via iPhone
看 gclog 就行
|
2
momocraft 3 小时 40 分钟前
开 gc log 然后面多加水
|
4
feimg99 1 小时 12 分钟前
jconsole or visualvm
Java 没落成这样子了吗?这俩内置工具都没人知道? |
5
cxshun 1 小时 3 分钟前
真实使用的内存如果可以连接就用楼上的 jconsole 或 visualvm ,如果不行,就直接 dump 出来看,dump 出来的时候会强制 GC 一致,后面就是真实占用的内存了。
但如果你只是想看整个应用使用的内存,直接看 Top 的 RES 就好了,当然,这里包含了堆外内存,你的意思是只看堆内内存就考虑用上面的方式。 metrics 的话 spring actuator 里面有包含 jvm.used 类似的,可以参考下 |
6
Ayanokouji 1 小时 3 分钟前
实时预览工具 arthas
springboot 项目 spring-boot-starter-actuator prometheus 有 jmx_exporter 唉,论监控或者运维生态,有几个语言能和 java 比的 |