内存分析工具
内存分析工具
1. 测试工具介绍
1.1测试目的
java内存泄漏是每个Java程序员都会遇到的问题,程序在本地运行一切正常,可是布署到远端就会出现内存无限制的增长,最后系统瘫痪,那么如何最快最好的检测程序的稳定性,防止系统崩盘,
作为Internet最流行的编程语言之一,Java现正非常流行.我们的网络应用程序就主要采用Java语言开发,大体上分为客户端、服务器和数据库三个层次.在进入测试过程中,我们发现有一个程序模块系统内存和CPU资源消耗急剧增加,持续增长到出现java.lang.OutOfMemoryError为止.经过分析Java内存泄漏是破坏系统的主要因素.这里与大家分享我们在开发过程中遇到的Java内存泄漏的检测和处理解决过程.
1.2.window测试工具
mat
1.3.linux测试工具
2.Jconsole
2.1概述:
jconsole是一个用java写的GUI程序,用来监控VM,并可监控远程的VM,非常易用,而且功能非常强。
使用方法:命令行里打 jconsole,选则进程就可以了。
2.2 使用介绍:
性能分析
下面说说如何分析,如何使用这六个标签
· 概述: Displays overview information about the Java VM and monitored values.
· 内存: 显示内存使用信息
· 线程: 显示线程使用信息
· 类: 显示类装载信息
· *VM摘要:*显示java VM信息
· MBeans: 显示 MBeans.
java
Tomcat
JConsole中关于内存分区的说明。
Eden Space (heap): 内存最初从这个线程池分配给大部分对象。
Survivor Space (heap):用于保存在eden space内存池中经过垃圾回收后没有被回收的对象。
Tenured Generation (heap):用于保持已经在 survivor space内存池中存在了一段时间的对象。
Permanent Generation (non-heap): 保存虚拟机自己的静态(refective)数据,例如类(class)和方法(method)对象。Java虚拟机共享这些类数据。这个区域被分割为只读的和只写的,
Code Cache (non-heap):HotSpot Java虚拟机包括一个用于编译和保存本地代码(native code)的内存,叫做“代码缓存区”(code cache)
GC的算法和参数对性能有显著的影响,注意垃圾回收次数、时间、以及partial GC和full GC,调整你所使用的不同GC和以及各个GC下的参数,然后在内存视图下观察,以得到好的性能。
关于GC,可以参考:http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
2.3JVM调优
2.31JVM调优之JSTACK找出最耗CPU的线程并定位代码
概述:
jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。
3.VisualVM进行性能分析
3.1.概述
VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作。本文主要介绍如何使用 VisualVM 进行性能分析及调优。
1.安装
tools->plugin->Available Plugin
注意1.5以后自动就有
3.2.启动
在窗口命令中输入:jvisualvm命令Enter键进入。 (Java Virtual Machine)
3.3性能分析