我正在尝试将兵马俑与 ehcache 一起使用。我的项目设置就像我正在使用 2 个 tomcat 实例,其中部署了与 ehcache 集成的应用程序。我需要这两个实例之间的同步,这就是我使用兵马俑的原因。但是我面临错误
“net.sf.ehcache.CacheException:get() 中未捕获的异常 - Java 堆空间”当我将 ehcache 与 terracotta 集成时。我的 ehcache.xml 是
<?xml version="1.0" encoding="UTF-8"?>
<ehcache name="terracotta" maxBytesLocalHeap="30%" >
<diskStore path="java.io.tmpdir" />
<terracottaConfig url="localhost:9510"/>
<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"/>
<cache name="LocalCache"
timeToLiveSeconds="10"
maxElementsOnDisk="0"
eternal="false"
memoryStoreEvictionPolicy="LFU" >
<terracotta />
</cache>
<cache name="cache1"
timeToLiveSeconds="10"
maxElementsOnDisk="0"
eternal="false"
memoryStoreEvictionPolicy="LFU" >
<terracotta />
</cache>
<cache name="cache2"
timeToLiveSeconds="10"
maxElementsOnDisk="0"
eternal="false"
memoryStoreEvictionPolicy="LFU" >
<terracotta />
</cache>
<cache name="cache3"
timeToLiveSeconds="10"
maxElementsOnDisk="0"
eternal="false"
memoryStoreEvictionPolicy="LFU" >
<terracotta />
</cache>
<cache name="cache4"
timeToLiveSeconds="10"
maxElementsOnDisk="0"
eternal="false"
memoryStoreEvictionPolicy="LFU" >
<terracotta />
</cache>
<cache name="cache5"
timeToLiveSeconds="10"
maxElementsOnDisk="0"
eternal="false"
memoryStoreEvictionPolicy="LFU" >
<terracotta />
</cache>
<cache name="cache6"
timeToLiveSeconds="10"
maxElementsOnDisk="0"
eternal="false"
memoryStoreEvictionPolicy="LFU" >
<terracotta />
</cache>
<cache name="cache7"
timeToLiveSeconds="10"
maxElementsOnDisk="0"
eternal="false"
memoryStoreEvictionPolicy="LFU" >
<terracotta />
</cache>
<cache name="cache8"
timeToLiveSeconds="10"
maxElementsOnDisk="0"
eternal="false"
memoryStoreEvictionPolicy="LFU" >
<terracotta />
</cache>
<cache name="cache9"
timeToLiveSeconds="10"
maxElementsOnDisk="0"
eternal="false"
memoryStoreEvictionPolicy="LFU" >
<terracotta />
</cache>
<cache name="cache10"
timeToLiveSeconds="10"
maxElementsOnDisk="0"
eternal="false"
memoryStoreEvictionPolicy="LFU" >
<terracotta />
</cache>
<cache name="DetailStockByKey"
timeToLiveSeconds="10"
maxElementsOnDisk="0"
eternal="false"
memoryStoreEvictionPolicy="LFU" >
<terracotta />
</cache>
<cache name="cache11"
timeToLiveSeconds="10"
maxElementsOnDisk="0"
eternal="false"
memoryStoreEvictionPolicy="LFU" >
<terracotta />
</cache>
<cache name="cache12"
timeToLiveSeconds="10"
maxElementsOnDisk="0"
eternal="false"
memoryStoreEvictionPolicy="LFU" >
<terracotta />
</cache>
<cache name="cache13"
timeToLiveSeconds="10"
maxElementsOnDisk="0"
eternal="false"
memoryStoreEvictionPolicy="LFU" >
<terracotta />
</cache>
<cache name="cache15"
timeToLiveSeconds="10"
eternal="false"
memoryStoreEvictionPolicy="LFU" >
<!--<terracotta /> -->
</cache>
<cache name="cache14"
timeToLiveSeconds="10"
eternal="false"
memoryStoreEvictionPolicy="LFU" >
<!--<terracotta /> -->
</cache>
</ehcache>
我也收到类似警告
警告:尝试计算对象图的大小时,已达到 1,000 个对象引用的配置限制。如果大小调整操作继续进行,可能会出现严重的性能下降。这可以通过将 CacheManger 或 Cache 元素 maxDepthExceededBehavior 设置为“abort”或使用 @IgnoreSizeOf 注释添加停止点来避免。如果在配置的限制下性能下降不是问题,请使用 CacheManager 或 Cache 元素 maxDepth 属性提高限制值。有关详细信息,请参阅 Ehcache 配置文档。
我正在使用 -Xmx:1024m 来运行兵马俑。我遇到了这个问题,而且在运行独立的 ehcache.xml 时我的响应时间也更短。然而,当使用带有兵马俑的 ehcache 时,响应时间增加了 700 倍。请帮助解决此问题。我应该怎么做才能减少响应时间,我不会再遇到这个错误。提前致谢