zoukankan      html  css  js  c++  java
  • Java内存分析

    java heap是分配给实例类和数组对象运行数据区,所有java线程在运行期间共享heap中的数据。java heap dump相当于java应用在运行的时候在某一个时间点上打了一个快照。

    1、触发thread dump

    kill -QUIT java_pid 或者 kill -3 java_pid

    2、jstat

    使用jstat工具可以查看运行的java应用的heap size、perm size、survivor ratio等信息。例如jstat -gcutil pid 1000 5。1000是每隔1000ms取一次样本,缺省时间单位是ms,可以设置成s。5是取5次样本。-gcutil是统计垃圾回收的总体情况。

    3、触发Java heap dump

    • 使用jmap -dump触发。jmap -dump:format=b,file=filename java_pid。Dump contents of the heap into a binary file for analysis。
    • 使用jconsole。到MBean>com.sun.management>HotSpotDiagnostic>操作>dumpHeap中,点击 dumpHeap按钮。生成的dump文件在java应用的根目录下面。
    • 在应用启动时配置相关的参数。-XX:+HeapDumpOnOutOfMemoryError,当应用OOM的时候生成dump文件。
    • 使用hprof。启动虚拟机的时候加入-Xrunhprof:head=site,会生成java.hprof.txt文件。这个配置会影响虚拟机运行,不要在线上运行。

    4、分析Java heap dump

    • 使用IBM的HeapAnalyzer。下载后是一个haNNN.jar包。java -Xmx521m -jar haNNN.jar /path/to/heap.dump.out
    • jhat是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来。jhat -J-Xmx512m path/to/dump.out
    • EclipseMemoryAnalyzer

    在socket、nio中,有一些内存是直接向操作系统申请的,这部分在堆内存中是看不到的。可以通过-XX:MaxDirectMemorySize=Number来设置这部分内存的最大空间。

  • 相关阅读:
    UIView动画效果之----翻转.旋转.偏移.翻页.缩放.取反的动画效
    iOS Runloop 消息循环
    Objective-C Fast Enumeration
    Obj-C Memory Management
    设计模式
    查找算法(顺序查找、二分法查找、二叉树查找、hash查找)
    设计模式
    Objective-C Operators and Expressions
    Objective-C Numbers
    HDU 1828 Picture(线段树扫描线求周长)
  • 原文地址:https://www.cnblogs.com/xianzhedeyu/p/5800666.html
Copyright © 2011-2022 走看看