jconsole工具检测堆内存变化的使用

jconsole将Java写的程序检测。

从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码。

如果是从命令行启动,使 JDK 在 PATH 上,运行 jconsole 即可。

如果从 GUI shell 启动,找到 JDK 安装路径,打开 bin 文件夹,双击 jconsole 。

当分析工具弹出时(取决于正在运行的 Java 版本以及正在运行的 Java 程序数量),可能会出现一个对话框,要求输入一个进程的 URL 来连接,也可能列出许多不同的本地 Java 进程(有时包含 JConsole 进程本身)来连接。如图所示:

大家可以看到很占内存,因为是实时读取的嘛

非堆内存一般指 方法区内存 或者永久区内存

写个代码跑一跑:

package jvmTest;

public class test01 {
   public static void main(String[] args) {
    while (true) {

    }
}
}

连接我的程序进行监控

看下线程数:

包括主线程之类的左下角 会有线程名字 这是一个类运行过程中 必备的

其他的检测内容大家也都点点试试吧。有空我再给大家继续补充这个工具的使用详情。敬请期待

原文地址:https://www.cnblogs.com/toov5/p/9875976.html

时间: 2024-08-11 16:53:06

jconsole工具检测堆内存变化的使用的相关文章

Jvm垃圾回收堆内存变化过程

当Eden区域满时,触发minor GC,垃圾收集器把Eden区域中的不可达对象标记出来.第一次执行minor GC时Survivor 1与Survivor 2均为空: Eden中的不可达对象占用的内存被回收,存活的对象将被移动到一个Survivor中(一定程度解决内存碎片问题),另外一个Survivor区域为空: 再次触发minor GC时,Eden区域与不为空的Survivor区域中的不可达对象被标记并清理,存活的对象被移动到另外的空Survivor区域.多次执行minor GC后,存活次数

(转)利用JConsole工具监控java程序内存和JVM

转自:http://www.cnblogs.com/luihengk/p/5446279.html 一.找到java应用程序对应的进程PI 性能测试应用程序访问地址:http://192.168.29.218:7070/training/ 部署的应用服务器为tomcat6.028 启动tomcat服务器后,任务管理器里可以看到多了java.exe进程,如图 PS:这里启动了多个其他程序 2.查询测试应用程序对应的进程PID号(根据端口号查找) 1)  Cmd命令:netstat  -aon|fi

Android工具:LeakCanary—内存泄露检测神器

一.LeakCanary简介LeakCanary是Square公司开源的一个检测内存的泄露的函数库,可以方便地和你的项目进行集成,在Debug版本中监控Activity.Fragment等的内存泄露:LeakCanary集成到项目中之后,在检测到内存泄露时,会发送消息到系统通知栏.点击后打开名称DisplayLeakActivity的页面,并显示泄露的跟踪信息,Logcat上面也会有对应的日志输出.同时如果跟踪信息不足以定位时,DisplayLeakActivity还为开发者默认保存了最近7个d

利用jmap和MAT等工具查看JVM运行时堆内存

jmap JDK自带了一些工具可以帮助我们查看JVM运行的堆内存情况,常用的是jmap命令 jmap -heap <pid> 打印堆的使用情况 那么,从这个输出中我们也可以大致看出堆的结构,分为Young Generation (年轻代) 和 Old Generation (老年代) Young Generation又被划分为:Eden Space , From Space 和 To Space 可以看到这里To区是干净的,还未被使用,From区已经使用了95%了 jmap -histo[:l

JVM堆内存监测的一种方式,性能调优依旧任重道远

上月,由极客邦.InfoQ和听云联合主办2016 APMCon中国应用性能管理大会圆满落下帷幕.会上,Java冠军Martijn Verburg进行了一场Java and the Machine的分享,讨论了为什么数据分析至关重要.他有着十多年Java经验,目前是创业公司jClarity的CEO,jClarity是一款采用统计和机器学习来探究性能问题根源的方案.会后,InfoQ还专访Martijn以进一步了解沟通. JVM堆内存及一种监测方式 在讨论Martijn的团队如何进行堆内存监测之前,我

Java虚拟机的内存组成以及堆内存介绍

一.java内存组成介绍:堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在 Java 虚拟机启动时创建的.”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”.可以看出JVM主要管理两种类型的内存:堆和非堆.简单来说堆就是Java代码可及的内存,是留给开发人员使用的:非堆就是JVM留给 自己用的,所以方法区.JVM内部处理或优化所需的内存(如JIT编译后的代码缓存).每

(入门贴)JVM堆内存相关的启动参数:年轻代、老年代和永久代的内存分配

如果想观察JVM进程占用的堆内存,可以通过命令工具jmap或者可视化工具jvisualvm.exe.JVM这些启动参数都拥有默认值,如果想了解JVM的内存分配策略,最好手动设置这些启动参数.再通过JDK提供的工具的统计结果,进行对比,就比较容易理解这些内存分配的理论知识.运行环境是win7 32位操作系统,JDK1.7.0_60版本. 测试代码和JVM启动参数如下: public class Test { public static void main(String[] args) { int

(适合入门)JVM堆内存相关的启动参数:年轻一代、岁和永久代内存分配

假设你要观察JVM进程消耗的堆内存,通过命令工具jmap或可视化工具jvisualvm.exe.JVM这些参数的默认启动值.假设你想知道JVM内存分配策略,最开始手动设置这些参数.通过JDK统计结果,进行对照,就比較easy理解这些内存分配的理论知识. 执行环境是win7 32位操作系统,JDK1.7.0_60版本号. 測试代码和JVM启动參数例如以下: public class Test { public static void main(String[] args) { int a = 0;

Android 性能优化之内存泄漏检测以及内存优化(上)

在 Java 中,内存的分配是由程序完成的,而内存的释放则是由 Garbage Collecation(GC) 完成的,Java/Android 程序员不用像 C/C++ 程序员一样手动调用相关函数来管理内存的分配和释放,虽然方便了很多,但是这也就造成了内存泄漏的可能性,所以记录一下针对 Android 应用的内存泄漏的检测,处理和优化的相关内容,上篇主要会分析 Java/Android 的内存分配以及 GC 的详细分析,中篇会阐述 Android 内存泄漏的检测和内存泄漏的常见产生情景,下篇会