Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Liferay中清除布局缓存_Java_Caching_Layout_Liferay - Fatal编程技术网

Java 如何在Liferay中清除布局缓存

Java 如何在Liferay中清除布局缓存,java,caching,layout,liferay,Java,Caching,Layout,Liferay,我的Liferay缓存有问题 场景: 我正在读取一个XML文件,并使用Liferay API将布局导入到我的Liferay DB中 版面的类型设置列中存储了大量数据 问题: 当我导入大约5000个布局时,我会得到一个OutofMemoryException。 我可以找到保留最多的堆空间是通过EhCache对象。 (其中包含LayoutCacheModel和我的大型字体设置) 每次布局导入后清除缓存是一个好主意吗 如果是,如何清除特定于布局的缓存。(我正在使用Liferay 6.0) 谢谢 Se

我的Liferay缓存有问题

场景: 我正在读取一个XML文件,并使用Liferay API将布局导入到我的Liferay DB中

版面的类型设置列中存储了大量数据

问题: 当我导入大约5000个布局时,我会得到一个OutofMemoryException。 我可以找到保留最多的堆空间是通过EhCache对象。 (其中包含LayoutCacheModel和我的大型字体设置)

每次布局导入后清除缓存是一个好主意吗

如果是,如何清除特定于布局的缓存。(我正在使用Liferay 6.0)

谢谢


SeBi

在查看FLASH EHCHACE之前(可能最好不要在每个导入之后,而是在几百次之后),查看您所拥有的JVM设置,并考虑增加分配给运行门户的JVM的最大堆大小。例如-Xms1024m-Xmx1024m-XX:MaxPermSize=128m

此外,您应该在网站上查看门户的性能调优(尽管我不确定您使用的是什么版本)

鉴于您已经配置了JVM设置,您可以查看在加载X之后刷新ehcache(我仍然建议您在加载>1次之后刷新它,而不是每次加载)。您可以通过以下操作获得
CacheManager
的句柄并刷新它:

CacheManager manager = CacheManager.getInstance();
manager.removalAll();

我自己在Liferay中从未这样做过,但我认为这可能仍然有一些好处。

您也可以配置缓存大小,而不是完全清空缓存。监视JMX数据以确定实际缓存的大小,并根据需要采用。缓存配置的一些文档是,我希望在《用户指南》中提供更多文档。

与@ramsinb给出的答案类似,我能够使用以下代码清除缓存:

LayoutPersistenceImpl.java

public void clearCache() {
    if (_HIBERNATE_CACHE_USE_SECOND_LEVEL_CACHE) {
        CacheRegistryUtil.clear(LayoutImpl.class.getName());
    }

    EntityCacheUtil.clearCache(LayoutImpl.class.getName());
    FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
    FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
}

我必须手动复制此代码,因为它不能作为服务提供。

谢谢您的回答。不,这是作为间隔作业完成的。基本上,我不需要在成功导入后由缓存维护布局。(我已经配置了最大堆大小)你好,Olaf…谢谢你的回答。这正是我现在想要做的。但是,在中,我们如何配置缓存大小?我只能在记忆中找到MaxElement(