0

I have a problem running Java applications on a server.

root@dobby [/opt]# jdk1.7.0_09/jre/bin/java -version
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.

...but the free RAM is about 4GB (of which 3GB is used by the Linux cache). If I add Xmx to the command:

root@dobby [/opt]# jdk1.7.0_09/jre/bin/java -Xmx100m -version
#
# There is insufficient memory for the Java Runtime Environment to continue.
# pthread_getattr_np
# An error report file with more information is saved as:
# /opt/hs_err_pid32241.log

What's up?

Details:

  • 64-bit system
  • Linux 2.6.32
  • CentOS 6.2
  • Oracle JDK 1.7.0 update 9 (problem also occurred in an earlier version)

Java error report: http://pastebin.com/uaxdSyh3

ulimit:

root@dobby [/home/bart]# ulimit -a -S
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 62763
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) 1048576
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) 1024
virtual memory          (kbytes, -v) 1048576
file locks                      (-x) unlimited


root@dobby [/home/bart]# ulimit -a H
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 62763
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) 1048576
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) 1024
virtual memory          (kbytes, -v) 1048576
file locks                      (-x) unlimited
10
  • These errors are about the ability to reserve virtual memory. How much physical memory you have or how much of it is available is irrelevant. Nov 21, 2012 at 19:58
  • @DavidSchwartz, could be. I can run ''java -version'' on machines with a lot less memory than this though and Linux can overcommit memory pretty well with the default settings. I could be a non-default memory overcommit setting though, I can give you that ;) AFAIK, that could hinder virtual memory reservavtion.
    – wzzrd
    Nov 22, 2012 at 9:35
  • This line is your culprit: max memory size (kbytes, -m) 1048576. It is limiting the heap to 1GB maximum. I think the virtual memory one too. Nov 22, 2012 at 12:52
  • @MirceaChirea 1GB may not be an incredible amount for a real application, but shouldn't it be more than enough for java -Xmx100m -version? After all, that shouldn't require more than 100MB, ever. Nov 22, 2012 at 12:59
  • Added a detailed error report Nov 22, 2012 at 13:12

1 Answer 1

2

Simple answer would be a problem with your limits.conf. Can you post the output of

ulimit -a -S
ulimit -a -H 

Ok, I went ahead and checked this. The problem is with the ''-v'' setting, with the virtual memory setting, not the ''-m'' one. This is on a Fedora 17 machine, but that should matter:

$ ulimit -S -v
unlimited
$ java -version
java version "1.7.0_09-icedtea"
OpenJDK Runtime Environment (fedora-2.3.3.fc17.1-x86_64)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)

$ ulimit -v 1048576
$ java -version
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.

Go fix! ;)

1

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .