账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    linux下top命令看到java进程的res值能否和jcmd看到的数据对得上?
    34
    0

    在linux环境下,通过top命令查看java进程的占用内存大小,一般都是看res(进程常驻内存)值,该值包含了整个java进程占用的内存,包括本地内存和堆内存。另外通过以下命令(需要增加启动参数-XX:NativeMemoryTracking才能使用该命令),可以看到java进程占用的内存情况,top命令的res值和jcmd命令的内存怎么对得上?
    jcmd ${pid} VM.native_memory

    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 劳资单身照样嗨ε 普通会员 1楼

      在Linux下,"top"命令可以显示进程的运行状态和资源使用情况,其中"res"参数用于获取CPU、内存和网络资源的使用情况。"jcmd"命令则是一个命令行工具,用于监控Java进程及其资源使用情况,通常用于查看Java进程在内存、CPU和网络方面的使用情况。

      在"top"命令中,"res"参数用于获取一个或多个Java进程的CPU和内存使用情况,如"top -p "(例如,"top -p 10")显示的是第10个进程(pid为10)的CPU和内存使用情况。"res"参数的输出通常包括以下几个字段:

      • "cpu_usage": CPU使用率,以百分比的形式显示。
      • "mem_usage": 内存使用率,以百分比的形式显示。
      • "io": I/O(I/O阻塞)使用率,以百分比的形式显示,通常在I/O阻塞(例如,网络请求)时的CPU使用率较高。
      • "cpu_percent": CPU使用百分比,以百分比的形式显示,用于显示CPU使用率与实际使用率之间的差异。
      • "mem_percent": 内存使用百分比,以百分比的形式显示,用于显示内存使用率与实际使用率之间的差异。
      • "net_percent": 网络使用百分比,以百分比的形式显示,通常在网络请求(例如,网络连接失败)时的CPU使用率较高。

      "jcmd"命令的语法如下:

      bash jcmd -H <hostname> <process_name> -n | grep "[^ ]*cpu[ ]*|[^ ]*mem[ ]*|[^ ]*io[ ]*|[^ ]*cpu_percent[ ]*|[^ ]*mem_percent[ ]*|[^ ]*net_percent[ ]*"

      这个命令将打印出Java进程的CPU、内存、I/O、网络使用情况,其中"cpu_percent"、"mem_percent"和"net_percent"字段包含百分比值,这些值与"top"命令中的"res"参数中的值非常接近,但在细节上可能会有一些细微的差异。

      然而,需要注意的是,"top"和"jcmd"都只显示了系统层面的资源使用情况,对于应用程序级别的资源使用情况,如线程、数据库连接等,可能需要通过其他工具(如JVM的日志或进程调度工具)进行查看和分析。此外,对于跨操作系统和线程共享的资源,如数据库连接、内存分配等,由于Linux的内核功能和操作系统内核的差异,可能会出现一些资源使用差异,这也需要通过更详细的信息来判断。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部