zoukankan      html  css  js  c++  java
  • linux环境常用命令和java/jvm常用命令

    Linux查看系统内存和cpu情况:

    ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

    Linux查看系统内存占用情况(概况):

    free -h

    Linux查看系统内存和cpu等详细信息:

    top

    注:

    1.内存排序: Shift + M;2.改变内存单位: E键;3.显示详细路径: C键;4.显示CPU占比: T键;5.显示内存占比: M键;6.高亮显示: Z键;7.列高亮显示: X键;

    Java查看实时堆栈信息:

    jmap -heap PID

    Java将堆内存使用的详细情况输出到文件:

    jmap -dump:file=xxx.hprof PID

    jmap -dump:live,format=b,file=xxx.hprof PID (使用hprof二进制形式,输出jvm的heap内容到文件=.  live子选项是可选的,假如指定live选项,那么只输出活的对象到文件)

    Java查看实时gc信息(5秒刷新一次):

    jstat -gc PID 5000

    Java实时查看虚拟机的各项参数:

    jinfo PID

    Java输出线程dump信息到文件(jstack更多用法参考:https://www.jianshu.com/p/8d5782bc596e):

    jstack PID > dump.jstack

    堆外内存分析

    在分析堆外内存时,在网上搜了很多。在分析堆外内存时,使用到了jcmd命令,Native Memory Tracking (NMT) 是Hotspot VM用来分析VM内部内存使用情况的一个功能。我们可以利用jcmd(jdk自带)这个工具来访问NMT的数据

    在使用jcmd之前,需要配置一些jvm参数,如下如所示:

    即:-XX:NativeMemoryTracking=[off | summary | detail] 配置该jvm参数,重启应用即可。

    注: -XX:NativeMemoryTracking=必须放在java与-jar之间,如:java -XX:NativeMemoryTracking=detail -jar application.jar

    使用命令 jcmd PID VM.native_memory detail scale=MB > a.txt 查看内存的一个使用情况。

    这里包含了几个部分,在分析这些内存的时候,需要搞明白啥意思,具体可以参考文章:https://blog.csdn.net/Developlee/article/details/100691997

    搞清楚每一项代表的含义,那接下来就是结合自己的代码,分析哪块可能有问题。对于我问题,通过 jcmd PID VM.native_memory baseline 设置基准线,耐心多次 jcmd pid VM.native_memory detail.diff scale=MB > a_diff.txt 看差值,然后得出有详细信息。

    以上的Code为代码缓存(默认是240M),通过-XX:ReservedCodeCacheSize=50m参数可以设置其大小

    Class的大小需要如下2个参数(元空间)配合配置,大小根据实际情况配置(参考:https://blog.csdn.net/mayifan0/article/details/80479903

    -XX:MaxMetaspaceSize=150m 

    -XX:CompressedClassSpaceSize=120m  (jdk8默认1G)

  • 相关阅读:
    Azure 云助手主要功能
    静态dll的问题终于搞定了
    青云QingCloud黄允松:最高效的研发管理就是没有管理
    开源libco库:单机千万连接、支撑微信8亿用户的后台框架基石
    青云QingCloud宣布完成C轮融资,金额1亿美元
    NET MVC权限验证
    Fizz-Buzz-Whizz
    API访问客户端
    使用IronPython给.Net程序
    Smart Framework
  • 原文地址:https://www.cnblogs.com/007sx/p/13605970.html
Copyright © 2011-2022 走看看