2011-10-07 65 views
3

我剛來到這裏,無論是谷歌還是我的知識都會讓我前進。想想下面的情況:我讀了很多(高達數百萬)大對象(每個500MB),有時我只讀了500KB的數百萬個對象,這完全取決於我的軟件的用戶。每個對象都將在流水線中進行處理,因此它們不需要一直處於內存中,只需要一個引用就可以在序列化後在我的硬盤上再次找到對象,以便我可以再次反序列化它。所以它就像大型對象的持久緩存。緩存大型對象並在需要時對它們進行序列化(Java)

所以來到這裏,我的問題:

  1. 是否有解決方案(任何框架),這不正是我需要什麼?這包括:在以某種方式確定緩存是否已滿後對大對象進行任意序列化?

  2. 如果沒有:是否有辦法以某種方式智能檢查天氣一個對象應該被序列化或不是?例如以某種方式檢查內存大小?或者像軟件聽衆(當它被髮布的時候)聽衆的東西?)。

非常感謝,

基督教

回答

0

存儲數百萬個對象聽起來像一個數據庫應用程序。

+0

是。但是在某些時候,我需要在我的「軟件」中同時使用很多對象來一起計算它們的批量。這些對象是btw圖像。 ;) – user984161

+0

我假設你已經有一個包含文件名等的圖像數據結構,但不包含圖像數據本身。爲什麼不將文件(圖像數據)存儲在磁盤/數據庫上並在需要時檢索它們? – michael667

+0

其實我都有。圖像數據和結構。但是你是對的,這正是我的問題:如何確定我需要序列化一個對象的天氣(根據可用內存)。有沒有聰明的方法?例如使用softreference會意味着,當我創建或更改它時,我總是需要序列化一個對象,因爲我不知道何時Java將它從堆中踢出。或者我可以聽聽嗎? – user984161

0

查看Oracle Coherence。還有一些開源替代品,但是,Coherence是功能最豐富的。

編輯: 當然Coherence Alternatives

+0

感謝您的提示。你能說出一個開源項目嗎?實際上我們提供的軟件應該是開源的。 – user984161

相關問題