Wed, 27 Mar 2013 19:21:18 +0100
7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
Summary: Ergonomics now also takes available virtual memory into account when deciding for a heap size. The helper method to determine the maximum allocatable memory block now uses the appropriate OS specific calls to retrieve available virtual memory for the java process. In 32 bit environments this method now also searches for the maximum actually reservable amount of memory. Merge previously separate implementations for Linux/BSD/Solaris into a single method.
Reviewed-by: jmasa, tamao
1 /*
2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
25 #ifndef OS_SOLARIS_VM_JVM_SOLARIS_H
26 #define OS_SOLARIS_VM_JVM_SOLARIS_H
28 /*
29 // HotSpot integration note:
30 //
31 // This is derived from the JDK classic file:
32 // "$JDK/src/solaris/javavm/export/jvm_md.h":15 (ver. 1.10 98/04/22)
33 // All local includes have been commented out.
34 */
36 #ifndef JVM_MD_H
37 #define JVM_MD_H
39 /*
40 * This file is currently collecting system-specific dregs for the
41 * JNI conversion, which should be sorted out later.
42 */
44 #include <dirent.h> /* For DIR */
45 #include <sys/param.h> /* For MAXPATHLEN */
46 #include <sys/socket.h> /* For socklen_t */
47 #include <unistd.h> /* For F_OK, R_OK, W_OK */
48 #include <sys/int_types.h> /* for intptr_t types (64 Bit cleanliness) */
50 #define JNI_ONLOAD_SYMBOLS {"JNI_OnLoad"}
51 #define JNI_ONUNLOAD_SYMBOLS {"JNI_OnUnload"}
52 #define JVM_ONLOAD_SYMBOLS {"JVM_OnLoad"}
53 #define AGENT_ONLOAD_SYMBOLS {"Agent_OnLoad"}
54 #define AGENT_ONUNLOAD_SYMBOLS {"Agent_OnUnload"}
55 #define AGENT_ONATTACH_SYMBOLS {"Agent_OnAttach"}
57 #define JNI_LIB_PREFIX "lib"
58 #define JNI_LIB_SUFFIX ".so"
60 #define JVM_MAXPATHLEN MAXPATHLEN
62 #define JVM_R_OK R_OK
63 #define JVM_W_OK W_OK
64 #define JVM_X_OK X_OK
65 #define JVM_F_OK F_OK
67 /*
68 * File I/O
69 */
71 #include <sys/types.h>
72 #include <sys/stat.h>
73 #include <fcntl.h>
74 #include <errno.h>
76 /* O Flags */
78 #define JVM_O_RDONLY O_RDONLY
79 #define JVM_O_WRONLY O_WRONLY
80 #define JVM_O_RDWR O_RDWR
81 #define JVM_O_O_APPEND O_APPEND
82 #define JVM_O_EXCL O_EXCL
83 #define JVM_O_CREAT O_CREAT
85 /* Signal definitions */
87 #define BREAK_SIGNAL SIGQUIT /* Thread dumping support. */
88 #define INTERRUPT_SIGNAL SIGUSR1 /* Interruptible I/O support. */
89 #define ASYNC_SIGNAL SIGUSR2 /* Watcher & async err support. */
90 #define SHUTDOWN1_SIGNAL SIGHUP /* Shutdown Hooks support. */
91 #define SHUTDOWN2_SIGNAL SIGINT
92 #define SHUTDOWN3_SIGNAL SIGTERM
93 /* alternative signals used with -XX:+UseAltSigs (or for backward
94 compatibility with 1.2, -Xusealtsigs) flag. Chosen to be
95 unlikely to conflict with applications embedding the vm */
96 #define ALT_INTERRUPT_SIGNAL (SIGRTMIN + SIGRTMAX)/2 /* alternate intio signal */
97 #define ALT_ASYNC_SIGNAL ALT_INTERRUPT_SIGNAL+1 /* alternate async signal */
99 /* With 1.4.1 libjsig added versioning: used in os_solaris.cpp and jsig.c */
100 #define JSIG_VERSION_1_4_1 0x30140100
102 #endif /* JVM_MD_H */
104 #endif // OS_SOLARIS_VM_JVM_SOLARIS_H