You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Java应用内存分配、占用及Linux/Unix系统内存查询的技术咨询

Java应用与Linux系统内存查询方法

1. 查询生产服务器上Java应用的总分配内存大小

  • 先通过jps命令获取Java进程的PID:
    jps -l
    
  • 针对目标PID,用以下方式查看:
    • 用jinfo直接读取启动参数中的内存配置:
      jinfo -flag MaxHeapSize <PID>
      jinfo -flag InitialHeapSize <PID>
      
      这两个参数分别对应最大堆内存和初始堆内存,若应用未指定初始值,默认是最大堆内存的1/64。如果要统计包含非堆内存的总分配量,还需查看MaxMetaspaceSize等参数。
    • 查看进程启动命令行参数:
      cat /proc/<PID>/cmdline | tr '\0' ' '
      
      直接找到-Xmx(最大堆)、-Xms(初始堆)以及非堆相关的参数,这些就是分配给Java应用的总内存配置。

2. 查询Java应用已占用的内存量

  • 用jstat查看实时堆内存使用:
    jstat -gcutil <PID> 1000 5
    
    输出里的S0U、S1U、EU、OU是堆内存各区域的已用大小,MU是元空间已用大小,总和即为已用内存。
  • 用jmap查看内存统计:
    jmap -heap <PID>
    
    输出会明确列出已用堆内存、已用非堆内存的具体数值。
  • 从系统层面查看进程内存占用:
    top -p <PID>
    
    或
    ps aux | grep <PID>
    
    其中RES列是进程实际占用的物理内存,VSZ是虚拟内存大小。

3. 查询Linux/Unix系统可用内存的命令

  • free命令(最常用,带人类可读格式):
    free -h
    
    available列显示的是系统实际可分配给新进程的内存(包含可释放的缓存)。
  • cat /proc/meminfo:
    cat /proc/meminfo
    
    可查看详细内存数据,MemAvailable字段对应系统可用内存。
  • vmstat命令:
    vmstat
    
    输出中free列是空闲内存,buff和cache分别为缓冲区、缓存内存大小。

内容的提问来源于stack exchange,提问作者nilk3006

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 09:15:38