java - AIX - 无法创建 VM 线程。系统资源不足

标签 java bash unix heap-memory aix

我们有一个批处理作业可以在 Java 6 上顺利运行。但是,我尝试将其更新到 Java 8,但抛出以下错误。

Error occurred during initialization of VM Cannot create VM thread.

Out of system resources.

这是批处理作业的片段。

execute $JAVA_HOME/bin/java -Xmx2500m -classpath $CLASSPATH org.springframework.batch.core.launch.support.CommandLineJobRunner app-context/main-context.xml

我使用的机器是 Unix AIX。

$uname -a
AIX <servername> 2 7 00CBE6574C00

计算机上已安装 Java 8。 JAR 文件也被编译为 Java 8。

$java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 8.0.5.41 - ### (SR5 FP41))
IBM J9 VM (build 2.9, JRE 1.8.0 AIX ppc64-64-Bit Compressed References ### (JIT enabled, AOT enabled)

我认为这可能是堆大小问题,因此我使用了从 -Xmx64m 到 -Xmx5000m 的最大堆大小。但是,错误仍然存​​在。

这是系统电流限制:

$ulimit -a
core file size          (blocks, -c) 1048575
data seg size           (kbytes, -d) 131072
file size               (blocks, -f) unlimited
max memory size         (kbytes, -m) 32768
open files                      (-n) 40961
pipe size            (512 bytes, -p) 64
stack size              (kbytes, -s) 32768
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited

我是 UNIX 新手。任何帮助,将不胜感激。谢谢。

最佳答案

您要求虚拟机具有 2.5G 堆空间 (-Xmx2500m),但您只允许 32M 内存(最大内存大小 32786kb = 32MB)。

尝试将最大内存增加到(至少)2.6G。您将需要比您为堆指定的内容稍微多一点的内容,以适应 VM 固定成本。

关于java - AIX - 无法创建 VM 线程。系统资源不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59247318/

相关文章:

java - Vaadin 复选框列表

java - 定义 'Set set = new HashSet()' 时,设置为接口(interface)或类 Set 的实例?

bash - Linux shell - 解析奇怪格式的日期

c - 在 C 中设置 open() 系统调用的权限

unix - 在控制台关闭并在 Oracle Solaris 11 上打开新的控制台后,将 .jar 应用程序输出流抓取到控制台

java - 如何获取maven库的jar文件?

java - 我应该把 META-INF 放在 Gradle 的什么地方?

linux - 在shell脚本中动态添加2个数字

linux - 调用 bash 脚本并从另一个 bash 脚本填充输入数据

linux - 删除每 4 行末尾的逗号