RHEL jdk-8u20-linux-x64.tar.gz 1.8 действует как 32-битная версия
Я настраиваю новую машину. Сначала я случайно установил 32-разрядную версию Java, но я сорвал ее и установил jdk-8u20-linux-x64.tar.gz (также использовал RPM).
Эта машина имеет 132G или память, но я подозреваю, что я запускаю 32-битное Java-приложение, потому что оно всегда заканчивается или память в одном и том же месте, независимо от значения -Xmx.
Я получаю дамп из Java. Он жалуется, что у меня ограничение на ядро 0, но большинство настроек ulimit не ограничены или велики.
В err.log указывается либо на отсутствие физической памяти. или в 32-битном режиме. Я не могу верить первому, но не могу доказать / опровергнуть второе.
Программа управляет и массивом процессов. Он задыхается после вызова 12 процессов Java, каждый из которых немедленно считывает 2G данных в память.
Вот подтверждение концепции приложения:
import java.util.*;
import java.io.*;
public class PrintProps {
public static void main(String[] args) {
for (String pname : System.getProperties().stringPropertyNames()) {
System.out.println(String.format("Key:%30s PropVal:%s", pname, System.getProperty(pname)));
}
ArrayList<Process> alist = new ArrayList<Process>();
for (int i = 0; i < 50; i++) {
String[] jargs = new String[]{
"java",
"-cp",
"/usr/sup/jars/jpsgcs-pipe-pathing.jar",
"jpsgcs.pipe.SGSPValue",
"-d=/export/home/raja/SGS/CLL_MM_MBL/CLL_MM_DC/chrom9/6211-CLL_only_9.Loci.ped",
"-p=/base/Human610Q/ld/chrom9/TF_H610Q_9.ld",
String.format("-f=/tmp/6211/10K.%d",i)};
ProcessBuilder pb = new ProcessBuilder(jargs);
pb.directory(new File("."));
pb.inheritIO();
System.out.println(String.format("pbuilder %d ", i ));
try {
alist.add(pb.start());
Thread.sleep(1000);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
}
TL / DR оповещение. сожалею
Вот hs_err.log
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Cannot create GC thread. Out of system resources.
# Possible reasons:
# The system is out of physical RAM or swap space
# In 32 bit mode, the process size limit was hit
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Use 64 bit Java on a 64 bit OS
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# This output file may be truncated or incomplete.
#
# Out of Memory Error (gcTaskThread.cpp:48), pid=7938, tid=139841170798336
#
# JRE version: (8.0_20-b26) (build )
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.20-b23 mixed mode linux-amd64 compressed oops)
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
--------------- T H R E A D ---------------
Current thread (0x00007f2f48009000): JavaThread "Unknown thread" [_thread_in_vm, id=7940, stack(0x00007f2f4f3f7000,0x00007f2f4f4f8000)]
Stack: [0x00007f2f4f3f7000,0x00007f2f4f4f8000], sp=0x00007f2f4f4f6680, free space=1021k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0xa76cea] VMError::report_and_die()+0x2ca
V [libjvm.so+0x4e52fb] report_vm_out_of_memory(char const*, int, unsigned long, VMErrorType, char const*)+0x8b
V [libjvm.so+0x5afaff] GCTaskThread::GCTaskThread(GCTaskManager*, unsigned int, unsigned int)+0x11f
V [libjvm.so+0x5af068] GCTaskManager::initialize()+0x2c8
V [libjvm.so+0x90697b] ParallelScavengeHeap::initialize()+0x32b
V [libjvm.so+0xa44d0d] Universe::initialize_heap()+0xfd
V [libjvm.so+0xa4512f] universe_init()+0x3f
V [libjvm.so+0x612055] init_globals()+0x65
V [libjvm.so+0xa2acdd] Threads::create_vm(JavaVMInitArgs*, bool*)+0x24d
V [libjvm.so+0x6a9414] JNI_CreateJavaVM+0x74
C [libjli.so+0x736e] JavaMain+0x9e
C [libpthread.so.0+0x79d1]
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
Other Threads:
=>0x00007f2f48009000 (exited) JavaThread "Unknown thread" [_thread_in_vm, id=7940, stack(0x00007f2f4f3f7000,0x00007f2f4f4f8000)]
VM state:not at safepoint (not fully initialized)
VM Mutex/Monitor currently owned by a thread: None
GC Heap History (0 events):
No events
Deoptimization events (0 events):
No events
Internal exceptions (0 events):
No events
Events (0 events):
No events
Dynamic libraries:
00400000-00401000 r-xp 00000000 fd:00 23069232 /usr/java/jdk1.8.0_20/bin/java
00600000-00601000 rw-p 00000000 fd:00 23069232 /usr/java/jdk1.8.0_20/bin/java
01648000-01669000 rw-p 00000000 00:00 0 [heap]
80200000-d4200000 rw-p 00000000 00:00 0
d4200000-580100000 ---p 00000000 00:00 0
580100000-5aa100000 rw-p 00000000 00:00 0
5aa100000-800000000 ---p 00000000 00:00 0
32a4a00000-32a4a20000 r-xp 00000000 fd:00 11010054 /lib64/ld-2.12.so
32a4c1f000-32a4c20000 r--p 0001f000 fd:00 11010054 /lib64/ld-2.12.so
32a4c20000-32a4c21000 rw-p 00020000 fd:00 11010054 /lib64/ld-2.12.so
32a4c21000-32a4c22000 rw-p 00000000 00:00 0
32a4e00000-32a4e83000 r-xp 00000000 fd:00 11010116 /lib64/libm-2.12.so
32a4e83000-32a5082000 ---p 00083000 fd:00 11010116 /lib64/libm-2.12.so
32a5082000-32a5083000 r--p 00082000 fd:00 11010116 /lib64/libm-2.12.so
32a5083000-32a5084000 rw-p 00083000 fd:00 11010116 /lib64/libm-2.12.so
32a5200000-32a538a000 r-xp 00000000 fd:00 11010055 /lib64/libc-2.12.so
32a538a000-32a558a000 ---p 0018a000 fd:00 11010055 /lib64/libc-2.12.so
32a558a000-32a558e000 r--p 0018a000 fd:00 11010055 /lib64/libc-2.12.so
32a558e000-32a558f000 rw-p 0018e000 fd:00 11010055 /lib64/libc-2.12.so
32a558f000-32a5594000 rw-p 00000000 00:00 0
32a5600000-32a5617000 r-xp 00000000 fd:00 11010062 /lib64/libpthread-2.12.so
32a5617000-32a5817000 ---p 00017000 fd:00 11010062 /lib64/libpthread-2.12.so
32a5817000-32a5818000 r--p 00017000 fd:00 11010062 /lib64/libpthread-2.12.so
32a5818000-32a5819000 rw-p 00018000 fd:00 11010062 /lib64/libpthread-2.12.so
32a5819000-32a581d000 rw-p 00000000 00:00 0
32a5a00000-32a5a02000 r-xp 00000000 fd:00 11010076 /lib64/libdl-2.12.so
32a5a02000-32a5c02000 ---p 00002000 fd:00 11010076 /lib64/libdl-2.12.so
32a5c02000-32a5c03000 r--p 00002000 fd:00 11010076 /lib64/libdl-2.12.so
32a5c03000-32a5c04000 rw-p 00003000 fd:00 11010076 /lib64/libdl-2.12.so
32a6200000-32a6207000 r-xp 00000000 fd:00 11010066 /lib64/librt-2.12.so
32a6207000-32a6406000 ---p 00007000 fd:00 11010066 /lib64/librt-2.12.so
32a6406000-32a6407000 r--p 00006000 fd:00 11010066 /lib64/librt-2.12.so
32a6407000-32a6408000 rw-p 00007000 fd:00 11010066 /lib64/librt-2.12.so
32b5600000-32b5616000 r-xp 00000000 fd:00 11010100 /lib64/libnsl-2.12.so
32b5616000-32b5815000 ---p 00016000 fd:00 11010100 /lib64/libnsl-2.12.so
32b5815000-32b5816000 r--p 00015000 fd:00 11010100 /lib64/libnsl-2.12.so
32b5816000-32b5817000 rw-p 00016000 fd:00 11010100 /lib64/libnsl-2.12.so
32b5817000-32b5819000 rw-p 00000000 00:00 0
7f2f32c00000-7f2f32ea0000 rw-p 00000000 00:00 0
7f2f32ea0000-7f2f35400000 ---p 00000000 00:00 0
7f2f35400000-7f2f356a0000 rw-p 00000000 00:00 0
7f2f356a0000-7f2f37bff000 ---p 00000000 00:00 0
7f2f37bff000-7f2f37d50000 rw-p 00000000 00:00 0
7f2f37d50000-7f2f38fff000 ---p 00000000 00:00 0
7f2f38fff000-7f2f39000000 rw-p 00000000 00:00 0
7f2f39000000-7f2f39270000 rwxp 00000000 00:00 0
7f2f39270000-7f2f48000000 ---p 00000000 00:00 0
7f2f48000000-7f2f48039000 rw-p 00000000 00:00 0
7f2f48039000-7f2f4c000000 ---p 00000000 00:00 0
7f2f4e129000-7f2f4e39e000 rw-p 00000000 00:00 0
7f2f4e39e000-7f2f4e39f000 ---p 00000000 00:00 0
7f2f4e39f000-7f2f4e49f000 rw-p 00000000 00:00 0
7f2f4e49f000-7f2f4e4a0000 ---p 00000000 00:00 0
7f2f4e4a0000-7f2f4e5aa000 rw-p 00000000 00:00 0
7f2f4e5aa000-7f2f4e960000 ---p 00000000 00:00 0
7f2f4e960000-7f2f4e97a000 r-xp 00000000 fd:00 23069413 /usr/java/jdk1.8.0_20/jre/lib/amd64/libzip.so
7f2f4e97a000-7f2f4eb7a000 ---p 0001a000 fd:00 23069413 /usr/java/jdk1.8.0_20/jre/lib/amd64/libzip.so
7f2f4eb7a000-7f2f4eb7b000 rw-p 0001a000 fd:00 23069413 /usr/java/jdk1.8.0_20/jre/lib/amd64/libzip.so
7f2f4eb7b000-7f2f4eb85000 r-xp 00000000 fd:00 11010081 /lib64/libnss_nis-2.12.so
7f2f4eb85000-7f2f4ed84000 ---p 0000a000 fd:00 11010081 /lib64/libnss_nis-2.12.so
7f2f4ed84000-7f2f4ed85000 r--p 00009000 fd:00 11010081 /lib64/libnss_nis-2.12.so
7f2f4ed85000-7f2f4ed86000 rw-p 0000a000 fd:00 11010081 /lib64/libnss_nis-2.12.so
7f2f4ed86000-7f2f4ed92000 r-xp 00000000 fd:00 11010077 /lib64/libnss_files-2.12.so
7f2f4ed92000-7f2f4ef92000 ---p 0000c000 fd:00 11010077 /lib64/libnss_files-2.12.so
7f2f4ef92000-7f2f4ef93000 r--p 0000c000 fd:00 11010077 /lib64/libnss_files-2.12.so
7f2f4ef93000-7f2f4ef94000 rw-p 0000d000 fd:00 11010077 /lib64/libnss_files-2.12.so
7f2f4efbc000-7f2f4efe6000 r-xp 00000000 fd:00 23069378 /usr/java/jdk1.8.0_20/jre/lib/amd64/libjava.so
7f2f4efe6000-7f2f4f1e6000 ---p 0002a000 fd:00 23069378 /usr/java/jdk1.8.0_20/jre/lib/amd64/libjava.so
7f2f4f1e6000-7f2f4f1e8000 rw-p 0002a000 fd:00 23069378 /usr/java/jdk1.8.0_20/jre/lib/amd64/libjava.so
7f2f4f1e8000-7f2f4f1f5000 r-xp 00000000 fd:00 23069412 /usr/java/jdk1.8.0_20/jre/lib/amd64/libverify.so
7f2f4f1f5000-7f2f4f3f5000 ---p 0000d000 fd:00 23069412 /usr/java/jdk1.8.0_20/jre/lib/amd64/libverify.so
7f2f4f3f5000-7f2f4f3f7000 rw-p 0000d000 fd:00 23069412 /usr/java/jdk1.8.0_20/jre/lib/amd64/libverify.so
7f2f4f3f7000-7f2f4f3fa000 ---p 00000000 00:00 0
7f2f4f3fa000-7f2f4f4f8000 rw-p 00000000 00:00 0
7f2f4f4f8000-7f2f50162000 r-xp 00000000 fd:00 23069417 /usr/java/jdk1.8.0_20/jre/lib/amd64/server/libjvm.so
7f2f50162000-7f2f50361000 ---p 00c6a000 fd:00 23069417 /usr/java/jdk1.8.0_20/jre/lib/amd64/server/libjvm.so
7f2f50361000-7f2f50438000 rw-p 00c69000 fd:00 23069417 /usr/java/jdk1.8.0_20/jre/lib/amd64/server/libjvm.so
7f2f50438000-7f2f5047d000 rw-p 00000000 00:00 0
7f2f5047d000-7f2f50492000 r-xp 00000000 fd:00 23069680 /usr/java/jdk1.8.0_20/lib/amd64/jli/libjli.so
7f2f50492000-7f2f50691000 ---p 00015000 fd:00 23069680 /usr/java/jdk1.8.0_20/lib/amd64/jli/libjli.so
7f2f50691000-7f2f50692000 rw-p 00014000 fd:00 23069680 /usr/java/jdk1.8.0_20/lib/amd64/jli/libjli.so
7f2f50692000-7f2f50693000 rw-p 00000000 00:00 0
7f2f506ae000-7f2f506b1000 rw-p 00000000 00:00 0
7f2f506b1000-7f2f506b9000 rw-s 00000000 fd:00 12583065 /tmp/hsperfdata_rob/7938
7f2f506b9000-7f2f506ba000 rw-p 00000000 00:00 0
7f2f506ba000-7f2f506bb000 r--p 00000000 00:00 0
7f2f506bb000-7f2f506bc000 rw-p 00000000 00:00 0
7fff31e86000-7fff31e9b000 rw-p 00000000 00:00 0 [stack]
7fff31eb9000-7fff31eba000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
VM Arguments:
java_command: jpsgcs.pipe.SGSPValue -b -d=/export/home/rob/SGS/CLL_MM_MBL/CLL_MM_DC/chrom9/6211-CLL_only_9.Loci.ped -p=/base/Human610Q/ld/chrom9/TF_H610Q_9.ld -n=400 -s=1 --dist=8
java_class_path (initial): /usr/sup/jars/jpsgcs-pipe-pathing.jar
Launcher Type: SUN_STANDARD
Environment Variables:
JAVA_HOME=/usr/java/jdk1.8.0
CLASSPATH=/usr/sup/jars/jpsgcs-pipe-pathing.jar
PATH=.:/usr/sup/apache-maven-3.1.1/bin:/usr/sup/groovy/bin:/home/work/toolshed/gradle-2.0/bin:/usr/sup/eclipse:/usr/sup/pgsql/bin:/export/home/rob/bin:/usr/sup/bin:/usr/java/jdk1.8.0/bin:/usr/bin:/bin:/usr/sbin
USERNAME=rob
SHELL=/bin/bash
DISPLAY=:0.0
Signal Handlers:
SIGSEGV: [libjvm.so+0xa77530], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGBUS: [libjvm.so+0xa77530], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGFPE: [libjvm.so+0x8e1d90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGPIPE: [libjvm.so+0x8e1d90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGXFSZ: [libjvm.so+0x8e1d90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGILL: [libjvm.so+0x8e1d90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGUSR2: [libjvm.so+0x8e35c0], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO
SIGHUP: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGINT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGTERM: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGQUIT: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
--------------- S Y S T E M ---------------
OS:Red Hat Enterprise Linux Server release 6.5 (Santiago)
uname:Linux 2.6.32-431.29.2.el6.x86_64 #1 SMP Sun Jul 27 15:55:46 EDT 2014 x86_64
libc:glibc 2.12 NPTL 2.12
rlimit: STACK 10240k, CORE 0k, NPROC 1024, NOFILE 4096, AS infinity
load average:6.35 1.57 0.69
/proc/meminfo:
MemTotal: 132108656 kB
MemFree: 109573200 kB
Buffers: 71664 kB
Cached: 2582360 kB
SwapCached: 0 kB
Active: 19304804 kB
Inactive: 1990228 kB
Active(anon): 18639784 kB
Inactive(anon): 7724 kB
Active(file): 665020 kB
Inactive(file): 1982504 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 8208380 kB
SwapFree: 8208380 kB
Dirty: 138276 kB
Writeback: 0 kB
AnonPages: 18403024 kB
Mapped: 168804 kB
Shmem: 5968 kB
Slab: 276284 kB
SReclaimable: 137288 kB
SUnreclaim: 138996 kB
KernelStack: 14032 kB
PageTables: 77708 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 74262708 kB
Committed_AS: 71622560 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 518808 kB
VmallocChunk: 34289913932 kB
HardwareCorrupted: 0 kB
AnonHugePages: 16584704 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 65536 kB
DirectMap2M: 4079616 kB
DirectMap1G: 130023424 kB
CPU:total 32 (8 cores per cpu, 2 threads per core) family 6 model 62 stepping 4, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, aes, clmul, erms, ht, tsc, tscinvbit
Memory: 4k page, physical 132108656k(109565180k free), swap 8208380k(8208380k free)
vm_info: Java HotSpot(TM) 64-Bit Server VM (25.20-b23) for linux-amd64 JRE (1.8.0_20-b26), built on Jul 30 2014 13:13:52 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8)
time: Tue Oct 14 16:15:03 2014
elapsed time: 0 seconds (0d 0h 0m 0s)
2 ответа
Возможно, вы достигли предела процесса пользователя в ОС (который из моих эмпирических исследований включает потоки Java). Достижение этого предела может проявиться в OutOfMemoryError
,
На RHEL есть:
/etc/security/limits.d/90-nproc.conf
... который содержит ограничения пользователя. На RHEL6 (и CentOS6) "максимальное количество пользовательских процессов" по умолчанию установлено в 1024.
Попробуйте установить его unlimited
:
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc unlimited
root soft nproc unlimited
Этот ответ предполагает, что вы должны перезагрузиться, чтобы эти изменения вступили в силу.
Я также получил тот же hs_err_pid*.log при обновлении JRE с JRE-6u45 до JRE-8u20 (дистрибутив сервера) в 64-битной ОС Linux.
У меня есть контрольный пример для воспроизведения. Когда я запускаю несколько экземпляров этого тестового примера, на JRE-6u45 я никогда не получаю "недостаточно памяти для JVM" или hs_err_pid*.log. В том же тестовом примере выдается hs_err_pid*.log с недостаточным объемом памяти на одном и том же m/c.
Затем я узнал, что установил дистрибутив сервера JRE-8u20 и JRE-6u45, который у меня был, для настольной версии. Чтобы подтвердить это, я установил настольную версию JRE-8u20 и теперь никаких проблем.
Но я не понимаю первопричину - почему разница между ч / б серверной и настольной версией. есть ли ограничения памяти?