我从 godaddy 那里拿了一个虚拟专用服务器,这是我正在使用的 linux 版本
CentOS release 6.7 (Final)
我面临的问题是,当我尝试启动 tomcat 时,我看到以下错误
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
所以我用谷歌搜索并创建了一个名为 named setenv.sh 的文件
export CATALINA_OPTS="$CATALINA_OPTS -Xms512m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx8192m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=256m"
/opt/apache-tomcat-7.0.65/bin/
但我仍然面临同样的错误
这是我的 ulimit -a 的输出
root@s97-74-229-181 [/opt/apache-tomcat-7.0.65/bin]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 1029717
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 1029717
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
你能告诉我如何解决这个问题吗
output of my ulimit commands
ulimit -S -u
1029717
ulimit -H -u
1029717
我的内存信息
root@s97-74-229-181 [/opt/apache-tomcat-7.0.65/bin]# cat /proc/meminfo
MemTotal: 1048576 kB
MemFree: 497752 kB
Cached: 212220 kB
Buffers: 0 kB
Active: 112208 kB
Inactive: 407020 kB
Active(anon): 27520 kB
Inactive(anon): 284700 kB
Active(file): 84688 kB
Inactive(file): 122320 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 4 kB
Writeback: 0 kB
AnonPages: 312220 kB
Shmem: 5212 kB
Slab: 31540 kB
SReclaimable: 16532 kB
SUnreclaim: 15008 kB
最佳答案
告诉您的主机将 privvmpages 和 vmguarpages 配置得更高。它们不需要与物理内存相同,因为这会影响 linux 内存的工作方式
您可以通过删除文件缓存 echo 1 >/proc/sys/vm/drop_caches 来暂时解决该问题,但这只是暂时的。
您可以限制 java 在运行时使用最小 Xms 或在运行时使用最大 Xmx 尝试分配的内存块。在我的机器上使用这些选项运行 java:
java -Xms10M -Xmx10M 将总虚拟大小减少到 140MB 左右,只为分配的 Java 堆分配了 10MB 的连续 block 。
关于linux - 为什么tomcat在初始化VM的时候一再报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33621678/