我們在應用程序中使用EHCache進行緩存。我們在Cache中存儲一個大的XML String作爲值。我想知道什麼是將XML存儲在緩存中更有效的方式,XML作爲StringBuffer對象還是普通的String值。Java中的EHCache
我在這裏考慮的一點是,如果我將它另存爲一個純String,它可能會存儲在Stack中,而如果將其定義爲StringBuffer對象,它將存儲在Heap中。
請問您可以給一些關於什麼是更有效的方法的指針。
謝謝, 馬克
我們在應用程序中使用EHCache進行緩存。我們在Cache中存儲一個大的XML String作爲值。我想知道什麼是將XML存儲在緩存中更有效的方式,XML作爲StringBuffer對象還是普通的String值。Java中的EHCache
我在這裏考慮的一點是,如果我將它另存爲一個純String,它可能會存儲在Stack中,而如果將其定義爲StringBuffer對象,它將存儲在Heap中。
請問您可以給一些關於什麼是更有效的方法的指針。
謝謝, 馬克
哪種存儲值,你考慮嗎?
第一種情況很明顯,它必須有內存來存儲xml。從您的問題storing the XML in cache
表明您正在尋找用於存儲xml的高速緩存。
那麼這是在Ehcache配置的手中。緩存使用不同的方式來存儲值。您可以查看here屬性如何區分存儲位置的配置。
有一個另一個優點在使用大小配置所限定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.
我建議強烈反對存儲StringBuffer
/StringBuilder
,因爲它們代表可變對象。
至於性能,你可能想看看Ehcache 3,它現在功能完整,並支持自定義序列化器,使您能夠以有效的方式存儲任意類型。例如,默認的String
序列化程序比Ehcache 2.x使用的基本java序列化程序性能高得多。 你也可以去offheap存儲,如果你有很多的這些對象,因爲offheap是的Ehcache的開源產品3.
注的一部分:我上了Ehcache工作的
嗨維奈,謝謝信息。我懷疑在這種情況下EHCache的性能會更好嗎?將數據存儲爲字符串或將字符串存儲爲堆中的對象。謝謝 –