我在2GB RAM的VServer上设置了一个jenkins实例,运行CentOS 6.7的时候没有其他的运行(使用率<200MB)。
当启动jenkins构build所述实例时,jenkins运行gradle --debug --stacktrace test时总会出现此错误gradle --debug --stacktrace test :
19:26:50.727 [错误] [org.gradle.BuildExceptionReporter]引起:java.lang.OutOfMemoryError:无法创build新的本地线程
由于这似乎是不允许multithreading的情况下,我提出了限制:
[root @ xxx]#runuser -s / bin / bash jenkins -c'ulimit -u'
16384
我也尝试了不同的jenkins JVM内存分配标志,给实例200MB或1GB没有改变,降低堆栈大小以允许本地线程的空间也没有帮助。
当我以root运行相同的gradle命令时,gradle会挂起一个类似的错误:
19:29:14.939 [QUIET] [system.out] Error occurred during initialization of VM 19:29:14.940 [QUIET] [system.out] java.lang.OutOfMemoryError: unable to create new native thread 19:29:14.941 [QUIET] [system.out] at java.lang.Thread.start0(Native Method) 19:29:14.941 [QUIET] [system.out] at java.lang.Thread.start(Thread.java:714) 19:29:14.942 [QUIET] [system.out] at java.lang.ref.Reference.<clinit>(Reference.java:187)
还有什么我可以尝试解决这个问题吗?
您将要增加给予Gradle JVM本身的堆大小,这不会从Jenkinsconfigurationinheritance。 你可以使用GRADLE_OPTS环境variables来指定这个variables,或者在Jenkins中全局地通过“Manage Jenkins>configuration系统>全局属性>环境variables”来添加一个GRADLE_OPTSvariables,也可以在Gradle调用中添加适当的设置。带有环境variables的命令,例如:
GRADLE_OPTS="-Xmx256m" ./gradlew build