Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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
share|improve this question
    
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. –  David Schwartz Nov 21 '12 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 '12 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. –  Mircea Chirea Nov 22 '12 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. –  Bart van Heukelom Nov 22 '12 at 12:59
    
Added a detailed error report –  Bart van Heukelom Nov 22 '12 at 13:12
show 5 more comments

1 Answer

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! ;)

share|improve this answer
    
Appended to question. –  Bart van Heukelom Nov 22 '12 at 12:37
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.