首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新索引时的Opengrok OutOfMemoryError

重新索引时的Opengrok OutOfMemoryError
EN

Stack Overflow用户
提问于 2016-11-01 08:01:24
回答 1查看 972关注 0票数 0

我从SVN 19项目中签出的,都在代码源目录中。我使用以下命令从jenkins运行索引:

代码语言:javascript
复制
C:\Jenkins\workspace\Grok-Multiple-Projects-Checkout-And-Indexing>java -Xmx12288m -Xms2048m -jar C:\grok_0.12.1\opengrok-0.12.1.5\lib\opengrok.jar -W C:\grok_0.12.1\Data\configuration.xml -c C:\grok_0.12.1\ctags58\ctags.exe -P -S -v -s C:\grok_0.12.1\src -d C:\grok_0.12.1\Data -i *.zip -i *.tmp -i *.db -i *.jar -i d:.svn -G -L polished -a on -T 8 

第一次使用命令运行索引:没有错误!

但是,连续运行将生成一个

代码语言:javascript
复制
Java.lang.OutOfMemoryError: Java heap space

它运行良好,直到日志中的某个点挂起30分钟,并且在某一时刻,内存消耗增加,直到它消耗掉所有分配的12 of内存。

这是日志:

代码语言:javascript
复制
09:38:40 Nov 01, 2016 9:38:45 AM org.opensolaris.opengrok.index.IndexDatabase$1 run
09:38:40 SEVERE: Problem updating lucene index database: 
09:38:40 java.lang.OutOfMemoryError: Java heap space
09:38:40 
09:38:41 Nov 01, 2016 9:38:45 AM org.opensolaris.opengrok.util.Statistics report
09:38:41 INFO: Done indexing data of all repositories (took 0:37:20)
09:38:41 Nov 01, 2016 9:38:45 AM org.opensolaris.opengrok.util.Statistics report
09:38:41 INFO: Total time: 0:37:21
09:38:41 Nov 01, 2016 9:38:45 AM org.opensolaris.opengrok.util.Statistics report
09:38:41 INFO: Final Memory: 19M/11,332M

任何想法,为什么它需要这么多的内存,如果增加,它将解决OOM错误。会不会是opengrok的记忆泄露?

EN

回答 1

Stack Overflow用户

发布于 2021-05-13 16:20:34

我知道这对于旧的OpenGrok版本来说是个老生常谈的问题(我可以看出这一点,因为OpenGrok在2018年放弃了org.opensolaris类前缀),但是我认为它仍然需要一些答案。

假设索引器确实在执行增量重新索引,就必须有一些东西正在过度消耗堆。例如,它可能是通过将先前存在的历史与新添加的(增量)历史合并而引起的。

使用Eclipse选项运行索引器将创建一个堆转储,然后可以使用MAT ( -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/jvm/ )或YourKit等工具进行分析。

至于内存泄漏:并不是不可能(通过线程本地存储)在Java中创建内存泄漏,而是它们不太可能在索引器中显示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40356146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档