使用带赤土陶器的ehcache时出现java堆空间错误

时间:2012-11-10 08:37:10

标签: java exception ehcache heap-memory terracotta

我正在尝试使用赤土陶器和ehcache。我的项目设置就像我正在使用2个tomcat实例,我的应用程序集成了ehcache。我需要在这两个实例之间进行同步,这就是我使用兵马俑的原因。然而 我正面临错误

“net.sf.ehcache.CacheException:get()中未捕获的异常 - Java堆空间” 当我把ehcache与兵马俑融为一体时。 我的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为“中止”或添加停止点   使用@IgnoreSizeOf注释。如果性能下降不是   在配置的限制下发出,使用提高限制值   CacheManager或Cache元素maxDepth属性。对于   有关更多信息,请参阅Ehcache配置文档。

我正在使用-Xmx:1024m来运行兵马俑。我提到了这个问题,运行独立的ehcache.xml时我的响应时间也少了。然而,当使用ehcache与赤土陶器时,响应时间已增加了700倍。请帮助解决此问题。我应该怎么做,以便响应时间减少,我不会再次面对这个错误。 提前致谢

0 个答案:

没有答案