杜小虎
摘要:隨著科學技術的飛躍發(fā)展,計算機技術的日益進步,我們在日常生活中計算機也變得不可或缺,在計算機的應用中,我們時常會因為內(nèi)存問題而困擾,就是系統(tǒng)占用內(nèi)存與運行內(nèi)存之間的糾結,其實內(nèi)存是電腦中重要的一個部件,當電腦與CPU進行溝通時就需要通過內(nèi)存這個中間橋梁進行中間操作。計算機中所運行的所有程序都是在內(nèi)存中進行的運算的,因此內(nèi)存的工作狀態(tài)對計算機的運行效率影響是非常大的,也就有了系統(tǒng)內(nèi)存和系統(tǒng)占用內(nèi)存之間的關系。此文意在利用C#來查詢監(jiān)控計算機內(nèi)部軟件內(nèi)存,利用該系統(tǒng)使用者可以隨時檢測到計算機所占用的內(nèi)存空間,對計算機進行維護,是一個快捷實用的系統(tǒng),在系統(tǒng)實施階段,使用Microsoft Visual Studio.Net 2010作為前臺開發(fā)工具,C#作為基礎編程語言來完成此次系統(tǒng)操作。它的成功設計與實現(xiàn)方便了隨時了解自己計算機內(nèi)存占用情況,以便于隨時清理內(nèi)存,減輕計算機壓力,獲得更好的計算機快捷體驗。
關鍵詞:C#;系統(tǒng)內(nèi)存;監(jiān)控;系統(tǒng)實現(xiàn)
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2019)10-0223-02
開放科學(資源服務)標識碼(OSID):
我們采用的C#語言是一種相對簡單的,安全的,操作穩(wěn)定的開發(fā)性語言,它的眾多強大功能都是由C和C#延伸出來的,同時以自己高效率的運行速度,強大的語言操作能力,編寫語言的便利性,獨特性成了,.NET開發(fā)的首選語言,我們此次選用C#語言還在于它的便捷的面向組件的支持,例如Process類組件,各種強大的實用的能力也成為了實現(xiàn)系統(tǒng)軟件內(nèi)存中構建各類組件的理想之選。它的功能性和簡潔性不僅方便我們學習和運用,它的各類組件也為系統(tǒng)實現(xiàn)提供直接渠道。其次,C#語言的普及和簡易性更容易方便使用者操作。
1 選用C#開發(fā)的優(yōu)勢
1)C#語言是一種相對簡單的,安全的,操作穩(wěn)定的開發(fā)性語言。
2)C#增強了程序的運行效率,同時它在編寫時沒有太多的局限性,使得對它 在系統(tǒng)應用起來中更加靈活。
3)它的設計,封裝、繼承、多態(tài)都是面向?qū)ο蟮摹?/p>
4).NET為我們提供的垃圾回收器可以方便管理內(nèi)存信息,為我們后來獲取內(nèi)存大小提供直接渠道。
5)因為C#采用.NET的公共語言規(guī)范,從而使得在與其他語言開發(fā)的組件中具有兼容性。
6)C#的控制能力和它的靈活性很強使得我們在檢查系統(tǒng)錯誤時更容易的維護。
2 系統(tǒng)運行內(nèi)存與占用內(nèi)存
每一臺計算機在出廠制造完成后,除了外部設備存儲外,都會附帶一定大小的系統(tǒng)運行內(nèi)存,以供計算機存儲重要信息和運行操作,系統(tǒng)在運行讀取數(shù)據(jù)時,如果計算機內(nèi)存較小,系統(tǒng)對數(shù)據(jù)分配的內(nèi)存就會減少,程序就會頻繁地對硬盤進行讀取,這就會極大地降低了計算機的讀取速率,整體運行速度就會變得更慢,也就會出現(xiàn)卡頓現(xiàn)象,所以系統(tǒng)運行內(nèi)存越小相對其計算機運行速度更快。
內(nèi)存其實是電腦中重要的一個部件,只要我們在電腦中運行任意一個程序或軟件,CPU就會把其中所需要運算的數(shù)據(jù)調(diào)到內(nèi)存中進行運算,而在計算機中過多的安裝和使用軟件就會產(chǎn)生大量的數(shù)據(jù)信息占用系統(tǒng)內(nèi)存,當系統(tǒng)所被占用的內(nèi)存過多,計算機對于數(shù)據(jù)的運行速度,處理能力也會變慢甚至也會出現(xiàn)卡頓現(xiàn)象,極大的影響使用者的工作效率和體驗感,所以需要及時地了解計算機現(xiàn)占用內(nèi)存并及時清理,提高運行效率。
3 Process類組件
Process類組件為我們提供了對正在電腦上運行的軟件或程序的系統(tǒng)訪問。使用Process類組件,我們可以得到正在運行的系統(tǒng)軟件進程的現(xiàn)狀和內(nèi)存的使用情況,或者可以重新啟動新的進程。我們有時可以通過初始化Process類組件,來使用它得到目前有關程序運行進程的一些信息,為我們提供了對程序啟動、停止、控制和監(jiān)視的相關任務。此類信息包括一些線程集、需要加載的模塊和性能信息以及程序中進程當前使用的內(nèi)存情況。
4 系統(tǒng)實現(xiàn)
4.1建立一個windows窗體項目
定義內(nèi)存的信息結構
[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獲取當前程序的內(nèi)存使用情況
private void CurrentMemory()
{
Process process=Process.getCurrentProcess();
long usedMemory=process.Workingset64;
label1.Text="當前進程所耗的內(nèi)存:"+ usedMemory/1024+"KB";
}
4.3添加時鐘
添加時鐘,用來刷新內(nèi)存使用情況,在計算機運行期間系統(tǒng)中的內(nèi)存也在不斷地分配占用空間,影響實時監(jiān)控計算機的內(nèi)存時效性,在這里添加一個刷新時鐘,及時地在預定時間內(nèi)對獲取的數(shù)據(jù)進行刷新,起到實時監(jiān)控的作用。
private void timer1_Tick(object sender, Eventargs a)
{
currentMemory();
getAllProcess();
}
4.4時鐘啟止按鈕
界面上添加控制時鐘開啟和停止的按鈕,當時鐘開始運行時,界面上對于監(jiān)控到的內(nèi)存數(shù)據(jù)是不斷變化的,設置一個啟止按鈕,方便使用者控制數(shù)據(jù),讀取數(shù)據(jù)。
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 系統(tǒng)測試
首先,對于系統(tǒng)各個源代碼實現(xiàn)的程序單元進行單元測試,對每一個模塊是否能及時地運行出預先設定的功能進行考究,根據(jù)系統(tǒng)設計要求進行刪改達到最佳效果,其次,將所有單元模塊集成組裝成最后的系統(tǒng)進行監(jiān)控測試,是否能及時監(jiān)測到系統(tǒng)占用內(nèi)存,在各個單元所能實現(xiàn)的功能都有效的連接,將已能夠使用的系統(tǒng)與原先預設定的需求規(guī)格進行確定,是否能夠滿足使用者需求和使用便捷度,最后,將此系統(tǒng)投入對軟件的監(jiān)控,將監(jiān)測數(shù)據(jù)與系統(tǒng)數(shù)據(jù)比對,在實際運行環(huán)境下是否能發(fā)現(xiàn)軟件與系統(tǒng)定義不符合或矛盾,及時地對與出現(xiàn)的問題進行整改。系統(tǒng)測試無誤后即可以提供給使用者使用。
6 結束語
此系統(tǒng)嚴格按照C#的相關規(guī)范設計和開發(fā),也運用了C#中相關組件類等進行輔助設計,本系統(tǒng)主要是使用者對于計算機軟件消耗內(nèi)存的一個監(jiān)控系統(tǒng),由于計算機的普及速度太快,使用者的整體范圍擴大,對于計算機的內(nèi)存管理方法忽視的情況下,針對使用者設計此系統(tǒng),便于及時的使用系統(tǒng)及時的監(jiān)測計算機所消耗的內(nèi)存,并及時的進行清理,避免緩存的數(shù)據(jù)過多影響對使用數(shù)據(jù)的讀取速率,以及使用者對于計算機使用的舒適度的提高,此系統(tǒng)還設計了一個時鐘的起止按鈕,及時進行對于一個時間周期的監(jiān)控,能夠為使用者隨時更新數(shù)據(jù),提供監(jiān)測內(nèi)存。此系統(tǒng)在進行系統(tǒng)測試后已能夠正確的運行,能夠滿足預先設定的需求規(guī)劃,使用者可以很方便地使用此系統(tǒng)來檢測內(nèi)存消耗,避免計算機因為內(nèi)存過多卡頓而影響舒適體驗度。
【通聯(lián)編輯:謝媛媛】