我正在设置一个 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.