gpt4 book ai didi

java - Ehcache - 不终止 VM

转载 作者:行者123 更新时间:2023-11-29 08:50:26 26 4
gpt4 key购买 nike

我有一个简单的类测试来加载ehache 2.8.1

一切都很好,但是如果设置 diskPersistent="true"或 overflowToDisk="true"那么 VM 永远不会终止。

我已经尝试设置关闭钩子(Hook),但是这并没有被触发,因为 Ehcache 使用的线程不是守护进程,所以虚拟机永远不会走那么远。

<ehcache 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">
<diskStore path="/temp"/>
<defaultCache
maxElementsInMemory="100"
eternal="false"
overflowToDisk="false"
/>

<cache
name="resolveIpAddresses"
maxElementsInMemory="100000"
diskPersistent="true"
overflowToDisk="true"
eternal="false"
timeToLiveSeconds="3600"
/>
</ehcache>

ehcache 由带有 bean 的 spring 3.1.8 容器管理

<cache:annotation-driven />
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" p:cacheManager-ref="ehcache"/>
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:config-location="/ehcache.xml" p:shared="true"/>

将磁盘设置更改为 false 效果很好,但显然不是很好。我如何告诉 ehcache 磁盘线程是守护进程?

最佳答案

如果您使用的是 servlet 容器,则可以使用 servlet ShutdownListener ,否则可以通过在代码中显式调用 CacheManager.getInstance().shutdown() 来关闭磁盘线程。

Ehcache documentation表示 JVM 关闭 Hook 将:

shutdown the DiskStore. If the DiskStore is persistent, it will write the entries and index > to disk.

除了在最后一个非守护线程关闭时调用之外,还可以通过调用 System.exit() 显式调用关闭 Hook 。

关于java - Ehcache - 不终止 VM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22989994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com