Java 拒绝在低权限用户下在 Linux 中启动(以 root 身份正常工作) [英] Java Refuses to Start in Linux under low privilege users (works fine as root)
本文介绍了Java 拒绝在低权限用户下在 Linux 中启动(以 root 身份正常工作)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我被踩到了.
以 root 身份时:
root@web01 [~]# uname -aLinux web01 2.6.32-71.29.1.el6.x86_64 #1 SMP Mon Jun 27 19:49:27 BST 2011 x86_64 x86_64 x86_64 GNU/Linux`root@web01 [~]# java -versionjava版本1.6.0_27"Java(TM) SE 运行时环境(构建 1.6.0_27-b07)Java HotSpot(TM) 64 位服务器 VM(构建 20.2-b06,混合模式)
作为低权限用户:
user@web01 [~]# java -Xmx32m -version虚拟机初始化时出错无法为对象堆保留足够的空间无法创建Java虚拟机.
更新:
ulimit -a 的输出(以低权限用户运行时):
核心文件大小(块,-c)200000数据段大小 (kbytes, -d) 200000调度优先级 (-e) 0文件大小(块,-f)无限制待处理信号 (-i) 7875最大锁定内存 (kbytes, -l) 64最大内存大小 (kbytes, -m) 200000打开文件 (-n) 100管道大小(512 字节,-p)8POSIX 消息队列(字节,-q)819200实时优先级 (-r) 0堆栈大小(千字节,-s)8192cpu时间(秒,-t)无限制最大用户进程数 (-u) 35虚拟内存 (kbytes, -v) 200000文件锁 (-x) 无限制
解决方案
虚拟内存 (kbytes, -v) 200000
这是你的罪魁祸首.具有 32M 堆的 Java Vm 不适合:
<前>$ java -versionjava版本1.6.0_22"OpenJDK 运行时环境 (IcedTea6 1.10.3) (fedora-59.1.10.3.fc15-x86_64)OpenJDK 64 位服务器 VM(构建 20.0-b11,混合模式)$ ulimit -v 200000$ java -version虚拟机初始化时出错无法为对象堆保留足够的空间无法创建Java虚拟机.I'm stomped.
While as root:
root@web01 [~]# uname -a
Linux web01 2.6.32-71.29.1.el6.x86_64 #1 SMP Mon Jun 27 19:49:27 BST 2011 x86_64 x86_64 x86_64 GNU/Linux`
root@web01 [~]# java -version
java version "1.6.0_27"
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
Java HotSpot(TM) 64-Bit Server VM (build 20.2-b06, mixed mode)
While as a low-privilege user:
user@web01 [~]# java -Xmx32m -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
UPDATED:
Output of ulimit -a (when run as the low privilege user):
core file size (blocks, -c) 200000
data seg size (kbytes, -d) 200000
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7875
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) 200000
open files (-n) 100
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 35
virtual memory (kbytes, -v) 200000
file locks (-x) unlimited
解决方案
virtual memory (kbytes, -v) 200000
Here's your culprit. A Java Vm with 32M heap won't fit into that:
$ java -version java version "1.6.0_22" OpenJDK Runtime Environment (IcedTea6 1.10.3) (fedora-59.1.10.3.fc15-x86_64) OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode) $ ulimit -v 200000 $ java -version Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine.
这篇关于Java 拒绝在低权限用户下在 Linux 中启动(以 root 身份正常工作)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文