Java 拒绝在低权限用户下在 Linux 中启动(以 root 身份正常工作) [英] Java Refuses to Start in Linux under low privilege users (works fine as root)

查看:65
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆