java代码监控内存 java监控gc( 二 )


Task Manager 和 PerfMon
我们首先考察两种最常见的工具:Task Manager 和 PerfMon 。这两个工具都随 Windows 一起提供,因此由此起步比较容易 。
Task Manager
Task Manager 是一种非常见的 Windows 进程监控程序 。您可以通过熟悉的 Ctrl-Alt-Delete 组合键来启动它,或者右击任务栏 。Processes 选项卡显示了最详细的信息,如图 2 所示 。
图 2. Task Manager 进程选项卡
图 2 中显示的列已经通过选择 View -- Select Columns 作了调整 。有些列标题非常含糊 , 但可以在 Task Manager 帮助中找到各列的定义 。和进程内存使用情况关系最密切的计数器包括:
Mem Usage(内存使用):在线帮助将其称为进程的工作集(尽管很多人称之为驻留集)——当前在主存中的页面集 。但是这个数值包含能够和其java代码监控内存他进程共享的页面,因此要注意避免重复计算 。比方说,如果要计算共享同一个 DLL 的两个进程的总内存占用情况,不能简单地把“内存使用”值相加 。
Peak Mem Usage(内存使用高峰值):进程启动以来 Mem Usage(内存使用)字段的最大值 。
Page Faults(页面错误):进程启动以来要访问的页面不在主存中的总次数 。
VM Size(虚拟内存大?。毫镏涑莆胺峙涓趟接行槟饽诖孀苁?。”更确切地说 , 这是进程所 提交的内存 。如果进程保留内存而没有提交,那么该值就与总地址空间的大小有很大的差别 。
虽然 Windows 文档将 Mem Usage(内存使用)称为工作集,但在该上下文中,它实际上指的是很多人所说的驻留集(resident set),明白这一点很重要 。您可以在 Memory Management Reference 术语表(请参阅 参考资料)中找到这些术语的定义 。工作集 更通常的含义指的是一个逻辑概念,即在某一点上为了避免分页操作 , 进程需要驻留在内存中的那些页面 。
PerfMon
随 Windows 一起提供的另一种 Microsoft 工具是 PerfMon,它监控各种各样的计数器,从打印队列到电话 。PerfMon 通常在系统路径中,因此可以在命令行中输入 perfmon 来启动它 。这个工具的优点是以图形化的方式显示计数器,很容易看到计数器随时间的变化情况 。
请在 PerfMon 窗口上方的工具栏中单击 + 按钮,这样会打开一个对话框让您选择要监控的计数器,如图 3a 所示 。计数器按照 性能对象分成不同的类别 。与内存使用关系最密切的两个类是 Memory 和 Process 。选中计数器然后单击 Explain 按钮,就可以看到计数器的定义 。说明出现在主对话框下方弹出的单独的窗口中 。
怎么使用Java来监控内存?求具体实例代码 。其实首先你可以先使用监控内存工具 , 来监控下,如果内存消耗不是很大,其实就不用那么麻烦了 。如果实在要加个内存监控程序,可以使用Runtime中的MaxMemory、TotalMemory、FreeMemory来实现 。注意这些都是JVM的内存,请不要和系统的内存混淆 。另外如果要实时监控 , 必须还得弄个线程类 。大致思路是这样,至于内存溢出,你可以设定一个内存阈值,比如说15%的剩余内存设置,就报内存即将溢出的错误 。
如何监视计算机的CPU,内存和磁盘使用情况在Java中使用sigar来监控,简单方便!
使用说明:以下代码需要配合sigar的dll文件来用 , 需要将dll文件放到JDK下的bin文件夹下,供sigar程序调用,还需要sigar jar包 。以下程序经过测试,完全可用!
有关jar包跟dll文件我上传不了,私信我,我发你

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Map;
import java.util.Properties;

推荐阅读