2016-03-02 68 views
0

我們在應用程序中使用EHCache進行緩存。我們在Cache中存儲一個大的XML String作爲值。我想知道什麼是將XML存儲在緩存中更有效的方式,XML作爲StringBuffer對象還是普通的String值。Java中的EHCache

我在這裏考慮的一點是,如果我將它另存爲一個純String,它可能會存儲在Stack中,而如果將其定義爲StringBuffer對象,它將存儲在Heap中。

請問您可以給一些關於什麼是更有效的方法的指針。

謝謝, 馬克

回答

0

哪種存儲值,你考慮嗎?

  • String xml; ?
  • 用於存儲xml的緩存內存?

第一種情況很明顯,它必須有內存來存儲xml。從您的問題storing the XML in cache表明您正在尋找用於存儲xml的高速緩存。

那麼這是在Ehcache配置的手中。緩存使用不同的方式來存儲值。您可以查看here屬性如何區分存儲位置的配置。 Image source

有一個另一個優點在使用大小配置所限定here

You can use a percentage of the total JVM heap for the CacheManager 
maxBytesLocalHeap. The CacheManager percentage, then, is a portion of the total 
JVM heap, and in turn, the Cache percentage is the portion of the CacheManager 
pool for that tier. 

Source

+0

嗨維奈,謝謝信息。我懷疑在這種情況下EHCache的性能會更好嗎?將數據存儲爲字符串或將字符串存儲爲堆中的對象。謝謝 –

0

我建議強烈反對存儲StringBuffer/StringBuilder,因爲它們代表可變對象。

至於性能,你可能想看看Ehcache 3,它現在功能完整,並支持自定義序列化器,使您能夠以有效的方式存儲任意類型。例如,默認的String序列化程序比Ehcache 2.x使用的基本java序列化程序性能高得多。 你也可以去offheap存儲,如果你有很多的這些對象,因爲offheap是的Ehcache的開源產品3.

注的一部分:我上了Ehcache工作的