這篇文章可能是OpenHFT常見問題的一個很好的候選人。OpenHFT ChronicleMap內存的限制和限制
我在玩ChronicleMap考慮它的想法,但有很多問題。我相信大多數正在研究此產品的初級程序員都有類似的考慮。
你能解釋一下這個API如何管理內存嗎?
ChronicleMap宣佈了一些顯着的TBs堆外存儲器資源可用於處理其數據,我想清楚的看到這一點。
讓我們來找一個帶有500GB HD和4GB RAM的筆記本電腦的程序員。在這種情況下,純數學賽車 - 可用「交換」內存的總資源爲504GB。讓我們給OS和其他程序一半,我們剩下250GB高清和2GB內存。你能否詳細說明實際可用的內存ChronicleMap可以根據可用資源分配數量?
下一個相關的問題是關於ChronicleMap的實現。
我的理解是,每個ChronicleMap都會分配它所處理的內存塊,並在我們能夠準確預測通過的數據量時實現最佳的性能/內存使用率。但是,這是一個充滿活力的世界。
讓我們設置(誇張但是可能)例如:
假設地圖一個K(密鑰)「城市」和它們的V(值) - 「描述」(城市的)和允許用戶大範圍描述長度。
第一用戶輸入:K = "Amsterdam"
,V = "City of bicycles"
和該條目用於聲明地圖 - 它爲所述一對這樣的先例:
ChronicleMap<Integer, PostalCodeRange> cityPostalCodes = ChronicleMap
.of(CharSequence.class, CharSequence.class)
.averageKey("Amsterdam")
.averageValue("City of bicycles")
.entries(5_000)
.createOrRecoverPersistedTo(citiesAndDescriptions);
現在,下一個用戶被運走,並寫入的測定關於布拉格 他傳遞到:K = "Prague"
,V = "City of 100 towers is located in the hard of Europe ... blah, blah... million words ..."
現在的程序員曾預計最大5_000條目,但它得到了他的手,並有好幾千個條目。
ChronicleMap會自動爲這種情況分配內存嗎?如果是,是否有更好的方法來爲這個動態解決方案聲明ChronicleMaps?如果不是,你會推薦一種方法(最好在代碼示例中)如何最好地處理這種情況?
這是如何與持久性文件工作?
Can ChronicleMaps會耗盡我的RAM和/或磁盤空間嗎?避免這種情況的最佳做法?
換句話說,請解釋如何在低估和高估值(和/或密鑰)長度和條目數量的情況下管理內存。
以下哪些適用於ChronicleMap?
- 如果我分配大塊(
.entries(1_000_000)
,.averageValueSize(1_000_000)
和實際使用情況是 - 項= 100,和平均值大小= 100。
,會發生什麼?:
1.1。 - 一切正常,但會有大量浪費的塊 - 未使用?
1.2。 - 一切工作正常,未使用的內存可用於:
1.2.1 - ChronicleMap
1.2.2 - 給出了使用ChronicleMap
1.2.3線程 - 給定的過程
1.2.4 - 給定JVM
1.2.5 - 操作系統
1.3。 - 請解釋一下未使用的內存是否會發生其他問題
1.4。 - 超大小的聲明對我的持久性文件做了什麼?
- 相反的情況下的1 - I分配小塊(
.entries(10)
,.averageValueSize(10)
和實際使用是條目1_000_000s,和平均值大小=字節1_000s 會發生什麼情況?: 。
你好。請記住,我們的社區由不同性別的人組成,如果您將他們稱爲「先生們」,有些人可能會感到被排除在外。無論如何,我們寧願帖子不要包含任何稱呼。謝謝! – halfer