Vít*_*ega 11 java caching ehcache jhipster
我有一个jhipster项目,我添加了一些实体.
我的服务非常慢,因为此警告消息:
尝试计算对象图的大小时,达到了1.000对象引用的配置限制.如果继续进行尺寸调整操作,则可能发生严重的性能下降.通过将CacheManger或Cache <sizeOfPolicy>元素maxDepthExceededBehavior设置为"abort"或使用@IgnoreSizeOf注释添加停止点,可以避免这种情况.如果性能下降不是配置限制的问题,请使用CacheManager或Cache <sizeOfPolicy>元素maxDepth属性提高限制值.有关更多信息,请参阅Ehcache配置文档.
我可以更改什么来增加此限制或取消项目中的缓存?
小智 6
您可以在resources/ehcache.xml 中添加以下标签。属性maxDepthExceededBehavior = abort避免减慢您的服务。您也可以更改maxDepth以增加限制。
<sizeOfPolicy maxDepth="1000" maxDepthExceededBehavior="abort" />
Run Code Online (Sandbox Code Playgroud)
这是Ehcache官方文档关于缓存条目的大小的说明:
放入内存有限的缓存中的元素将测量其内存大小。测量添加到缓存的整个Element实例,包括键和值,以及将该实例添加到内部数据结构中的内存占用量。键和值作为对象图进行测量–遵循每个参考,还测量对象参考。这是递归进行的。
共享的引用将由引用它的每个类进行度量。这将导致高估。因此,应该忽略共享的引用。
调整高速缓存的大小涉及遍历对象图,该过程可能受注释限制。也可以在CacheManager和缓存级别上控制此过程。
通过在CacheManager级别添加以下元素,控制在调整堆上元素大小时引擎大小的深度
<sizeOfPolicy maxDepth="100" maxDepthExceededBehavior="abort" />
Run Code Online (Sandbox Code Playgroud)
该元素具有以下属性:
maxDepth该控件控制在size-of引擎采取任何操作之前可以访问多少个链接对象。此属性是必需的。
maxDepthExceededBehavior它指定在调整对象图大小时超过最大深度时会发生什么。该字段的可能值为:
continue这将强制引擎大小记录警告并继续进行大小调整操作。如果未指定此属性,continue则使用的行为
abort这将强制大小引擎中止大小调整,记录警告并标记缓存为未正确跟踪内存使用情况。使用此设置,Ehcache.hasAbortedSizeOf()返回
true
可以在缓存管理器级别(直接在下<ehcache>)和缓存级别(在<cache>或
下)配置SizeOf策略<defaultCache>。如果同时设置了高速缓存策略,则该策略始终会覆盖一个高速缓存管理器。该元素对分布式缓存不起作用。
| 归档时间: |
|
| 查看次数: |
7317 次 |
| 最近记录: |