jvm可以使用的記憶體分外兩種:堆記憶體和堆外記憶體。堆記憶體完全由jvm負責分配和釋放,堆外記憶體的存在是為了能直接分配和釋放記憶體,提高效率。
堆外記憶體優點:
對外記憶體由於避免了資料從使用者態向核心態的拷貝,提公升io效率,另外還可以節約大量的堆內記憶體,減少gc次數。
堆外記憶體缺點:
分配和**堆外記憶體比分配和**堆記憶體耗時;(解決方案:通過物件池避免頻繁地建立和銷毀堆外記憶體)
堆外記憶體原理:
堆內記憶體由jvm管理,是在「使用者態」時處理;而堆外記憶體由os管理,是在「核心態」時處理。如果從堆內向磁碟寫資料時,資料會被先複製到堆外記憶體,即核心緩衝區,然後再由os寫入磁碟。而直接使用堆外記憶體避免了資料從使用者態向核心態的拷貝。
Java面試來一發(一)TopN問題
1 topn問題描述 問題一 找出海量資料 現次數最多的n個資料。問題二 找出兩個超大檔案中的相同字串。問題三 找出超多整數中沒有重複出現的整數,或多少以內沒出現的整數。2 解決方案 通用方案 分而治之的思想,先拆分成很多小檔案,每個檔案分別統計和排序,然後歸併排序。問題一 除分而治之方案外,如果無...
設計模式來一發(四)抽象工廠模式
抽象工廠模式為建立一組相關或相互依賴的物件提供乙個介面,而且無需指定它們的具體類。對比工廠方法模式的定義 為某個物件提供乙個介面,而且無需指定它們的具體類。可以看出抽象工廠模式相當於是對工廠方法模式 的橫向擴充套件,工廠方法只能建立一類介面,而抽象工廠模式可以建立多類介面,當然這些介面遵循一致需求。...
設計模式來一發(五)單例模式
單例模式的設計是為了保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。如果想控制例項數目,節省系統資源的時候,就可以考慮單例模式。1 懶漢式 懶漢式是並不在instance定義處直接例項化,而是在使用時才例項化,這是考慮到資源節約,但一般來說,乙個物件的記憶體資源占用不會太大,但由於這種方式為...