public CollectorThread(int second,String path,String pid,String name)
{
this.second = second;
this.pid = pid;
this.name = name;
String osname = System.getProperty("os.name");
System.setProperty("PERFMON_PATH",path);
if("SunOS".equals(osname))
{
os = "solaris";
command = "ps -p "+pid+" -o pid,pcpu,pmem,osz,rss";
}
if("AIX".equals(osname))
{
os = "aix";
command = "ps v "+pid;
}
if("Linux".equals(osname))
{
os = "linux";
command = "ps u "+pid;
}
if(osname.indexOf("Window")>=0)
{
os = "window";
command = "java";
}
setPriority(Thread.MIN_PRIORITY);
}
public void execute()
{
try
{
Process p = rt.exec(command);
InputStream is = p.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = br.readLine();
line = br.readLine();
if(line == null || "".equals(line))
return;
StringTokenizer st = new StringTokenizer(line);
String ts = null;
String cpu = null;
String mem = null;
String vmem = null;
if("solaris".equals(os))
{
ts = formatDate(new Date());
if(st.hasMoreTokens())
st.nextToken();
if(st.hasMoreTokens())
cpu = st.nextToken();
if(st.hasMoreTokens())
st.nextToken();
if(st.hasMoreTokens())
vmem = st.nextToken();
if(st.hasMoreTokens())
mem = st.nextToken();
}
if("aix".equals(os))
{
ts = formatDate(new Date());
if(st.hasMoreTokens())
st.nextToken();
if(st.hasMoreTokens())
st.nextToken();
if(st.hasMoreTokens())
st.nextToken();
if(st.hasMoreTokens())
st.nextToken();
if(st.hasMoreTokens())
st.nextToken();
if(st.hasMoreTokens())
vmem = st.nextToken();
if(st.hasMoreTokens())
mem = st.nextToken();
if(st.hasMoreTokens())
st.nextToken();
if(st.hasMoreTokens())
st.nextToken();
if(st.hasMoreTokens())
st.nextToken();
if(st.hasMoreTokens())
cpu = st.nextToken();
}
if("linux".equals(os))
{
ts = formatDate(new Date());
if(st.hasMoreTokens())
st.nextToken();
if(st.hasMoreTokens())
st.nextToken();
if(st.hasMoreTokens())
cpu = st.nextToken();
if(st.hasMoreTokens())
st.nextToken();
if(st.hasMoreTokens())
vmem = st.nextToken();
if(st.hasMoreTokens())
mem = st.nextToken();
}
if(mem != null && !"".equals(mem))
mem = ""+Long.parseLong(mem)*1024;
if(vmem != null && !"".equals(vmem))
vmem = ""+Long.parseLong(vmem)*1024;
if(name != null && !"".equals(name))
{
String file = path+"/perfmon_cpu_"+name+".tsv";
FileOutputStream fos = new FileOutputStream(file,true);
fos.write(("\""+ts+"\"\t"+"\""+cpu+"\"\r\n").getBytes());
fos.close();
file = path+"/perfmon_mem_"+name+".tsv";
fos = new FileOutputStream(file,true);
fos.write(("\""+ts+"\"\t"+"\""+mem+"\"\r\n").getBytes());
fos.close();
file = path+"/perfmon_vmem_"+name+".tsv";
fos = new FileOutputStream(file,true);
fos.write(("\""+ts+"\"\t"+"\""+vmem+"\"\r\n").getBytes());
fos.close();
}
else
{
String file = path+"/perfmon_cpu_"+pid+".tsv";
FileOutputStream fos = new FileOutputStream(file,true);
fos.write(("\""+ts+"\"\t"+"\""+cpu+"\"\r\n").getBytes());
fos.close();
file = path+"/perfmon_mem_"+pid+".tsv";
fos = new FileOutputStream(file,true);
fos.write(("\""+ts+"\"\t"+"\""+mem+"\"\r\n").getBytes());
fos.close();
file = path+"/perfmon_vmem_"+pid+".tsv";
fos = new FileOutputStream(file,true);
fos.write(("\""+ts+"\"\t"+"\""+vmem+"\"\r\n").getBytes());
fos.close();
}
is.close();
p = null;
}
catch(Exception e)
{
e.printStackTrace();
}
}
分享到:
相关推荐
java 运行内存监控 系统内存监控小工具,可监控java运行期间所占内存大小,java gui小工具 双击运行即可执行 记得安装jdk8
Android平台下井下安全监控系统存在内存泄露问题。经过分析认为Java内存泄露是破坏系统的主要因素。文章着重介绍了在Android平台下开发应用程序中,内存泄露出现的原因及相应的解决办法,并通过示例程序进行说明。
在Unity游戏开发中,实时监控手机上的内存使用情况、帧率(fps)以及Debug.log的日志打印对于优化游戏性能和定位问题至关重要...在实际开发中,结合使用Unity的内置工具和第三方插件,可以构建出强大的调试和监控系统。
实验内容主要是利用Windows API来监控系统内存的变化。例如,`GetMemSta`函数调用了`GlobalMemoryStatus`函数,这个函数用于获取当前系统的全局内存状态,包括总物理内存(`dwTotalPhys`)、可用物理内存(`dwAvailPhys...
监控系统内存使用情况,AIX提供了工具如vmo命令。vmo命令允许系统管理员动态调整内存参数,以优化内存性能。例如,如果空闲内存不足,可以通过vmo命令增加Minfree和Maxfree的值。调整内存参数需谨慎,因为任何微小的...
在IT管理领域,了解系统资源的使用情况是至关重要的,特别是在服务器环境中,监控系统内存的消耗可以帮助我们确保系统的稳定运行,防止因内存不足导致的服务中断。对于AIX(Advanced Interactive eXecutive)操作...
系统实时监控则是一个更广泛的范畴,它包括对硬件资源(如CPU、内存、磁盘I/O、网络带宽)以及软件服务(如数据库、Web服务器)的持续监视。网络上传下载速度是系统实时监控中的重要指标,特别是在云计算和大数据...
总之,“内存监控显示”是一个基于易语言的实用工具,它不仅能够帮助用户实时监控系统内存,还为有经验的开发者提供了二次开发的机会,让他们可以定制更符合自己需求的内存管理解决方案。通过深入研究和使用这个源码...
本文将详细介绍如何使用.NET Core的内置API以及dotnet tool来获取并监控系统的CPU和内存信息。 首先,.NET Core提供了`System.Diagnostics.Process`类,它允许我们获取当前进程(或者指定进程)的资源使用情况。...
"监控系统进程内存自动重启脚本"是一种实用工具,它能够实时监测系统中特定进程的服务内存使用情况,并在内存使用超出预设阈值时自动重启该进程,以保持服务的正常运行。这种自动化策略可以避免由于内存耗尽导致的...
理解并监控这些内存指标可以帮助我们及时发现并解决潜在的内存泄漏问题,从而提高系统效率。 首先,Tomcat自带了一个名为`Manager`的应用,它允许管理员监控服务器的状态,包括JVM内存的使用情况。要启用这个功能,...
总结来说,"C# 打印机监控系统"是一个利用C#编程语言实现的打印任务监控解决方案,其核心功能包括打印任务的捕获、内存中.SPL文件的读取和转换为.EMF图像,以及实时监控。提供的源码使得用户可以根据自己的需求进行...
- Android Device Monitor(已弃用,但在旧版本Android Studio中可用):提供内存、CPU、文件系统等监控。 - Emmagee:可能提供的功能包括实时内存监控、内存快照、内存泄漏检测等。 四、Emmagee.apk可能的功能 -...
在本项目中,"C#实现电脑监控监控系统源码"是一个基于C#编程语言开发的计算机监控系统。这个系统的主要目标是提供一种方法来监控和管理个人或组织的计算机设备,以确保安全、提高效率并优化资源使用。以下是这个系统...
- `prtdiag`命令可以获取AIX内核的内存使用率,而`vmstat`或`sar`可用于监控系统内存状况。 - 当系统出现内存不足的情况时,可以通过上述工具结合`smit`的内存管理任务来诊断和调整内存配置。 3. **I/O监控**: ...
5. 性能监控:实时监控系统内存使用情况,为用户提供内存使用图表,帮助用户了解系统性能变化,以便更好地管理和优化内存。 然而,虽然内存救星这类工具在某些情况下可以改善电脑性能,但也需要注意,过度依赖这些...
在"易语言内存监控显示"这个主题中,我们主要探讨的是如何使用易语言来实现对系统内存的监控,并将监控结果显示出来。 内存监控是计算机系统管理中的一项重要任务,它能够帮助开发者或用户了解系统的内存使用情况,...
【木马清除专家 2008内存补丁】的工作原理是通过实时监控系统内存,检测任何异常的内存活动。它能够识别出那些试图在内存中运行的恶意代码,并及时阻止其执行,从而防止木马病毒对系统造成损害。此外,该补丁可能还...
内存使用监控是一个重要的系统管理工具,它主要用于实时跟踪和分析计算机系统的内存使用情况。在本文中,我们将深入探讨内存监控的原理、实现方法以及在实际应用中的价值。 内存,也称为RAM(随机存取存储器),是...
在IT行业中,对进程的监控是一项至关重要的任务,特别是对于内存使用情况的监控,它能够帮助我们及时发现并解决潜在的性能问题,如内存泄漏。本文将深入探讨如何指定绑定进程来监控其内存使用情况,并解释如何通过...