Java雜談來一發(四)堆外記憶體

2021-09-06 16:11:29 字數 407 閱讀 5204

jvm可以使用的記憶體分外兩種:堆記憶體和堆外記憶體。堆記憶體完全由jvm負責分配和釋放,堆外記憶體的存在是為了能直接分配和釋放記憶體,提高效率。

堆外記憶體優點

對外記憶體由於避免了資料從使用者態向核心態的拷貝,提公升io效率,另外還可以節約大量的堆內記憶體,減少gc次數。

堆外記憶體缺點

分配和**堆外記憶體比分配和**堆記憶體耗時;(解決方案:通過物件池避免頻繁地建立和銷毀堆外記憶體)

堆外記憶體原理

堆內記憶體由jvm管理,是在「使用者態」時處理;而堆外記憶體由os管理,是在「核心態」時處理。如果從堆內向磁碟寫資料時,資料會被先複製到堆外記憶體,即核心緩衝區,然後再由os寫入磁碟。而直接使用堆外記憶體避免了資料從使用者態向核心態的拷貝。

Java面試來一發(一)TopN問題

1 topn問題描述 問題一 找出海量資料 現次數最多的n個資料。問題二 找出兩個超大檔案中的相同字串。問題三 找出超多整數中沒有重複出現的整數,或多少以內沒出現的整數。2 解決方案 通用方案 分而治之的思想,先拆分成很多小檔案,每個檔案分別統計和排序,然後歸併排序。問題一 除分而治之方案外,如果無...

設計模式來一發(四)抽象工廠模式

抽象工廠模式為建立一組相關或相互依賴的物件提供乙個介面,而且無需指定它們的具體類。對比工廠方法模式的定義 為某個物件提供乙個介面,而且無需指定它們的具體類。可以看出抽象工廠模式相當於是對工廠方法模式 的橫向擴充套件,工廠方法只能建立一類介面,而抽象工廠模式可以建立多類介面,當然這些介面遵循一致需求。...

設計模式來一發(五)單例模式

單例模式的設計是為了保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。如果想控制例項數目,節省系統資源的時候,就可以考慮單例模式。1 懶漢式 懶漢式是並不在instance定義處直接例項化,而是在使用時才例項化,這是考慮到資源節約,但一般來說,乙個物件的記憶體資源占用不會太大,但由於這種方式為...