記憶體洩漏小記

2021-07-28 01:22:57 字數 607 閱讀 9700

記憶體託管語言中的記憶體洩漏產生的主要原因:保留下來卻永遠不再使用的物件引用。

典型的演算法是:

(1)檢查結果是否在快取中,如果在,就返回結果。 

(2)如果結果不在快取中,就進行計算。 

(3)將計算出來的結果新增到快取中,以便以後對該操作的呼叫可以使用。

注意:該演算法的問題(或者說是潛在的記憶體洩漏)出在最後一步。如果呼叫該操作時有相當多的不同輸入,就將有相當多的結果儲存在快取中。很明顯這不是正確的方法。

為了預防這種具有潛在破壞性的設計,程式必須確保對於快取所使用的記憶體容量有乙個上限。因此,

更好的演算法是:

(1)檢查結果是否在快取中,如果在,就返回結果。 

(2)如果結果不在快取中,就進行計算。 

(3)如果快取所佔的空間過大,就移除快取最久的結果。 

(4)將計算出來的結果新增到快取中,以便以後對該操作的呼叫可以使用

classloader的特別之處在於它不僅涉及「常規」的物件引用,還涉及元物件引用,比如:字段、方法和類。這意味著只要有對字段、方法、類或classloader的物件的引用,classloader就會駐留在jvm中。因為classloader本身可以關聯許多類及其靜態字段,所以就有許多記憶體被洩漏了。

關於記憶體洩漏小記

還沒遇到過windows的大型開發,最近在做乙個區域網下面的管理工具。nmon socket select程式設計。在編寫df h模組的時候,總是遇到記憶體洩漏的問題,由於平時寫c的時候很注意記憶體洩漏的問題。所以對於malloc,calloc,realloc,fopen等都是十分小心的。小工具主要...

記憶體洩漏和記憶體溢位 記憶體洩漏和記憶體溢位

記憶體洩漏 是指申請的記憶體空間使用完畢之後未 一次記憶體洩露危害可以忽略,但若一直洩漏,無論有多少記憶體,遲早都會被占用光,最終導致程式crash。因此,開發中我們要盡量避免記憶體洩漏的出現 記憶體溢位 是指程式在申請記憶體時,沒有足夠的記憶體空間供其使用。通俗理解就是記憶體不夠用了,通常在執行大...

wxWidgets delete記憶體洩漏

定義乙個結構typedef tag struct customnode struct,再定義乙個wxarrayptrvoid m nodearray 在程式的初始化過程裡 for wxint32 i 0 i 5 i node struct ptemp new node struct ptemp a ...