启动 Java 可执行文件时如何调整 Java 堆栈大小?

启动 Java 可执行文件时如何调整 Java 堆栈大小?

我正在设置一个 OpenMQ 环境,它是一个基于 Java 的消息中间件。

我运行命令 imqbrokerd(一个 java 可执行文件)来启动代理,但一直收到以下信息:

指定的堆栈大小太小,请至少指定 228k 错误:无法创建 Java 虚拟机。错误:发生了致命异常。程序将退出。

为了检查默认设置,我使用了命令“java -XX:+PrintFlagsFinal -version”并找到了与堆栈大小相关的以下条目:

 intx CompilerThreadStackSize    = 0                                   
 intx ThreadStackSize            = 1024                                
 intx VMThreadStackSize          = 1024                                
 java version "1.8.0_201"
 Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
 Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

上面的‘1024’是以字节还是KB为单位?

我知道可以使用 -Xss512K 选项设置堆栈大小: java -Xss512K -j myjar.jar

但是,我该如何执行相同操作来启动 imqbrokerd 之类的 Java 可执行文件呢?

非常感谢您分享您的见解!

答案1

谢谢 Rinzwind!按照你的提示,我发现,我需要使用而不是和-Xss标志-Xms来调整堆栈大小,而不是像文档中所说的那样Xmx。然后它成功启动了:

/opt/Oracle/MessageQueue/mq/bin$ ./imqbrokerd -vmargs "-Xss384k"  

[18/Jun/2020:16:15:14 EDT] 
================================================================================
Open Message Queue 4.5.2
Oracle
Version:  4.5.2  (Build 2-d)
Compile:  Thu Dec  8 17:30:48 PST 2011

Copyright (c) 2011, Oracle and/or its affiliates.  All rights reserved.
================================================================================
Java Runtime: 1.8.0_201 Oracle Corporation /usr/lib/jvm/java-8-oracle/jre
[18/Jun/2020:16:15:14 EDT]    IMQ_HOME=/opt/Oracle/MessageQueue/mq
[18/Jun/2020:16:15:14 EDT] IMQ_VARHOME=/opt/Oracle/MessageQueue/var/mq
[18/Jun/2020:16:15:14 EDT] Linux 4.4.0-177-generic amd64 erdbeer (4 cpu) bfzhou
[18/Jun/2020:16:15:14 EDT] Java Heap Size: max=188416k, current=188416k
[18/Jun/2020:16:15:14 EDT] Arguments: 
[18/Jun/2020:16:15:14 EDT] [B1060]: Loading persistent data...
[18/Jun/2020:16:15:14 EDT] Using built-in file-based persistent store: /opt/Oracle/MessageQueue/var/mq/instances/imqbroker/
[18/Jun/2020:16:15:14 EDT] [B1270]: Processing messages from transaction log file...
[18/Jun/2020:16:15:15 EDT] [B1039]: Broker "imqbroker@erdbeer:7676" ready.

相关内容