杜小虎
摘要:隨著科學技術的飛躍發展,計算機技術的日益進步,我們在日常生活中計算機也變得不可或缺,在計算機的應用中,我們時常會因為內存問題而困擾,就是系統占用內存與運行內存之間的糾結,其實內存是電腦中重要的一個部件,當電腦與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#中相關組件類等進行輔助設計,本系統主要是使用者對于計算機軟件消耗內存的一個監控系統,由于計算機的普及速度太快,使用者的整體范圍擴大,對于計算機的內存管理方法忽視的情況下,針對使用者設計此系統,便于及時的使用系統及時的監測計算機所消耗的內存,并及時的進行清理,避免緩存的數據過多影響對使用數據的讀取速率,以及使用者對于計算機使用的舒適度的提高,此系統還設計了一個時鐘的起止按鈕,及時進行對于一個時間周期的監控,能夠為使用者隨時更新數據,提供監測內存。此系統在進行系統測試后已能夠正確的運行,能夠滿足預先設定的需求規劃,使用者可以很方便地使用此系統來檢測內存消耗,避免計算機因為內存過多卡頓而影響舒適體驗度。
【通聯編輯:謝媛媛】