基于.NET平台的系统内存消耗监控的实现

2019-05-22 11:18杜小虎
电脑知识与技术 2019年10期
关键词:监控

杜小虎

摘要:随着科学技术的飞跃发展,计算机技术的日益进步,我们在日常生活中计算机也变得不可或缺,在计算机的应用中,我们时常会因为内存问题而困扰,就是系统占用内存与运行内存之间的纠结,其实内存是电脑中重要的一个部件,当电脑与CPU进行沟通时就需要通过内存这个中间桥梁进行中间操作。计算机中所运行的所有程序都是在内存中进行的运算的,因此内存的工作状态对计算机的运行效率影响是非常大的,也就有了系统内存和系统占用内存之间的关系。此文意在利用C#来查询监控计算机内部软件内存,利用该系统使用者可以随时检测到计算机所占用的内存空间,对计算机进行维护,是一个快捷实用的系统,在系统实施阶段,使用Microsoft Visual Studio.Net 2010作为前台开发工具,C#作为基础编程语言来完成此次系统操作。它的成功设计与实现方便了随时了解自己计算机内存占用情况,以便于随时清理内存,减轻计算机压力,获得更好的计算机快捷体验。

关键词:C#;系统内存;监控;系统实现

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2019)10-0223-02

开放科学(资源服务)标识码(OSID):

我们采用的C#语言是一种相对简单的,安全的,操作稳定的开发性语言,它的众多强大功能都是由C和C#延伸出来的,同时以自己高效率的运行速度,强大的语言操作能力,编写语言的便利性,独特性成了,.NET开发的首选语言,我们此次选用C#语言还在于它的便捷的面向组件的支持,例如Process类组件,各种强大的实用的能力也成为了实现系统软件内存中构建各类组件的理想之选。它的功能性和简洁性不仅方便我们学习和运用,它的各类组件也为系统实现提供直接渠道。其次,C#语言的普及和简易性更容易方便使用者操作。

1 选用C#开发的优势

1)C#语言是一种相对简单的,安全的,操作稳定的开发性语言。

2)C#增強了程序的运行效率,同时它在编写时没有太多的局限性,使得对它 在系统应用起来中更加灵活。

3)它的设计,封装、继承、多态都是面向对象的。

4).NET为我们提供的垃圾回收器可以方便管理内存信息,为我们后来获取内存大小提供直接渠道。

5)因为C#采用.NET的公共语言规范,从而使得在与其他语言开发的组件中具有兼容性。

6)C#的控制能力和它的灵活性很强使得我们在检查系统错误时更容易的维护。

2 系统运行内存与占用内存

每一台计算机在出厂制造完成后,除了外部设备存储外,都会附带一定大小的系统运行内存,以供计算机存储重要信息和运行操作,系统在运行读取数据时,如果计算机内存较小,系统对数据分配的内存就会减少,程序就会频繁地对硬盘进行读取,这就会极大地降低了计算机的读取速率,整体运行速度就会变得更慢,也就会出现卡顿现象,所以系统运行内存越小相对其计算机运行速度更快。

内存其实是电脑中重要的一个部件,只要我们在电脑中运行任意一个程序或软件,CPU就会把其中所需要运算的数据调到内存中进行运算,而在计算机中过多的安装和使用软件就会产生大量的数据信息占用系统内存,当系统所被占用的内存过多,计算机对于数据的运行速度,处理能力也会变慢甚至也会出现卡顿现象,极大的影响使用者的工作效率和体验感,所以需要及时地了解计算机现占用内存并及时清理,提高运行效率。

3 Process类组件

Process类组件为我们提供了对正在电脑上运行的软件或程序的系统访问。使用Process类组件,我们可以得到正在运行的系统软件进程的现状和内存的使用情况,或者可以重新启动新的进程。我们有时可以通过初始化Process类组件,来使用它得到目前有关程序运行进程的一些信息,为我们提供了对程序启动、停止、控制和监视的相关任务。此类信息包括一些线程集、需要加载的模块和性能信息以及程序中进程当前使用的内存情况。

4 系统实现

4.1建立一个windows窗体项目

定义内存的信息结构

[StructLayout(LayoutKind.Sequential)]

public struct MEMORY_INFO

{

public uint awL;

public uint awMemory1;

public uint awtotalPhys;

public uint awavailPhys;

public uint awtotalPageFile;

public uint awavailPageFile;

public uint awtotalVirtual;

public uint awavailVirtual;

}

4.2获取当前程序的内存使用情况

private void CurrentMemory()

{

Process process=Process.getCurrentProcess();

long usedMemory=process.Workingset64;

label1.Text="当前进程所耗的内存:"+ usedMemory/1024+"KB";

}

4.3添加时钟

添加时钟,用来刷新内存使用情况,在计算机运行期间系统中的内存也在不断地分配占用空间,影响实时监控计算机的内存时效性,在这里添加一个刷新时钟,及时地在预定时间内对获取的数据进行刷新,起到实时监控的作用。

private void timer1_Tick(object sender, Eventargs a)

{

currentMemory();

getAllProcess();

}

4.4时钟启止按钮

界面上添加控制时钟开启和停止的按钮,当时钟开始运行时,界面上对于监控到的内存数据是不断变化的,设置一个启止按钮,方便使用者控制数据,读取数据。

Private void btn run time click(object sender, EvenArgs a)

{

If (btn run time.text==“开始时钟”)

{

time1.Start():

btn_run.Enabled=false;

btn currrent.Enabled=false;

}

else

{

timer1.Stop();

btn run time.text=”开始时钟”;

btn run.Eabled=trun;

btn current.Enabled=true;

}

5 系统测试

首先,对于系统各个源代码实现的程序单元进行单元测试,对每一个模块是否能及时地运行出预先设定的功能进行考究,根据系统设计要求进行删改达到最佳效果,其次,将所有单元模块集成组装成最后的系统进行监控测试,是否能及时监测到系统占用内存,在各个单元所能实现的功能都有效的连接,将已能够使用的系统与原先预设定的需求规格进行确定,是否能够满足使用者需求和使用便捷度,最后,将此系统投入对软件的监控,将监测数据与系统数据比对,在实际运行环境下是否能发现软件与系统定义不符合或矛盾,及时地对与出现的问题进行整改。系统测试无误后即可以提供给使用者使用。

6 結束语

此系统严格按照C#的相关规范设计和开发,也运用了C#中相关组件类等进行辅助设计,本系统主要是使用者对于计算机软件消耗内存的一个监控系统,由于计算机的普及速度太快,使用者的整体范围扩大,对于计算机的内存管理方法忽视的情况下,针对使用者设计此系统,便于及时的使用系统及时的监测计算机所消耗的内存,并及时的进行清理,避免缓存的数据过多影响对使用数据的读取速率,以及使用者对于计算机使用的舒适度的提高,此系统还设计了一个时钟的起止按钮,及时进行对于一个时间周期的监控,能够为使用者随时更新数据,提供监测内存。此系统在进行系统测试后已能够正确的运行,能够满足预先设定的需求规划,使用者可以很方便地使用此系统来检测内存消耗,避免计算机因为内存过多卡顿而影响舒适体验度。

【通联编辑:谢媛媛】

猜你喜欢
监控
The Great Barrier Reef shows coral comeback
手机能监控疾病了
你被监控了吗?
Zabbix在ATS系统集中监控中的应用
监控软件预案策略控制在海底隧道监控中的应用
模糊监控图像视频的清晰化处理
立体化监控在广东省路网监控中的应用
基于IEC61850/61970的光伏并网监控系统
PDCA循环法在多重耐药菌感染监控中的应用
科学训练监控新趋势——适时监控