子“内存不足”和“超出了GC开销限制”

时间:2018-10-26 08:35:38

标签: java bash git svn subgit

我正在运行一个从svngit的转换项目。由于该应用程序是单线程的,因此我正在将该项目移至Faster PC。

因此没有任何选项栏httpSpooling = true;它可以在VM – 4 CPU's20 Gb of Ram上正常运行。

两个单独实例的RAM使用量为8GB,最高达到9.8Gb

作业暂停,压缩并SCP到新机器上-Deb9(与VM)i7(8 CPUs(有效))16GB内存的Bare Metal版本。

但是,仅启动一个SubGit实例时;我得到Java out of memoryGC Overhead Limit Exceeded。 我尝试将以下排列从repo.git/subgit/config添加到[daemon]

javaOptions = -noverify -client -Djava.awt.headless=true -Xmx8g -XX:+UseParallelGC -XX:-UseGCOverheadLimit – This gives GC Overhead Limit Exceeded Error
#javaOptions = -noverify -client -Djava.awt.headless=true -Xmx8g -XX:+UseParallelGC -XX:-UseGCOverheadLimit – (OPS Disabled) Gives an out of memory error.
javaOptions = -noverify -client -Djava.awt.headless=true –Xmx12g -XX:-UseGCOverheadLimit – this gives out of memory errors.

我也尝试了其他设置,包括将–client更改为–server,但这似乎是双向转换,这不是我要尝试的事情。

根据成功运行的系统上的应用程序使用情况,应该有足够的RAM,因此除非SubGit忽略某些值,否则我不会知道。

1 个答案:

答案 0 :(得分:1)

[daemon]节中的'javaOptions'实际上可能会被忽略,具体取决于您运行的操作:那些java选项会影响SubGit守护程序,但不会影响'subgit install'或'subgit fetch'操作。既然您已经提到过将存储库移至另一台计算机,所以我相信,您已经调用了这两个命令中的任何一个来重新启动镜像,因此这就是'daemon.javaOptions'被忽略的原因。要调整SubGit的Java选项,请在SubGit启动脚本(EXTRA_JVM_ARGUMENTS行)中直接对其进行编辑:

EXTRA_JVM_ARGUMENTS="-Dsun.io.useCanonCaches=false -Djava.awt.headless=true -Djna.nosys=true -Dsvnkit.http.methods=Digest,Basic,NTLM,Negotiate -Xmx512m"

关于内存消耗本身,取决于正在运行的操作。目前尚不清楚您是如何(通过“ subgit shutdown”或其他方式)在虚拟机上暂停作业,当时正在运行哪些操作(初始翻译或常规提取)以及如何在虚拟机上重新启动作业?新机器。