HP-UX Programmer's Guide for Java 2
Table Of Contents
- Table of Contents
- 1 Introduction
- 2 HotSpot Technology Tools and Commands
- 3 Configuration for Java™ Support
- 4 Performance and Tuning
- 5 Measuring System Performance
- 6 Using Threads
- 7 Using Signals
- 8 Using Java™ 2 JNI on HP-UX
- 9 Expanding Memory
- Determine your requirements
- Memory layout under HP-UX 11.0 (PA-RISC only)
- Additional memory available under HP-UX 11i (PA-RISC only)
- Allocating physical memory and swap in the Java™ heap
- Useful key command-line options for allocating memory
- Application-dependent considerations using large heap size HP-UX 11i PA-RISC
- Expanding heap size in native applications on PA-RISC HP-UX 11.11 and later releases
- Expanding heap size in native applications on Integrity HP-UX 11.23 and later releases
- Expanding heap size in HP-UX PA-RISC
- Expanding heap size in HP-UX Integrity
- 10 Diagnosing Memory Leaks
- A JDK/JRE 6.0.n and 7.0.n Usage Notes
- Using Java 2 JNI on HP-UX
- Garbage collection
- Asian TrueType fonts and Asian locales
- Date/Time methods defaults
- Profiling
- Compatibility with previous releases
- Java Cryptography Extension (JCE) policy files
- Configuring the Java Runtime Plug-In
- CLASSPATH environment variable
- Java Web Start technology usage
- Upgrading from a previous Java Web Start version
- IPv6 support
- Allocation Site Statistics and Zero Preparation -Xverbosegc
- JDK 6.0.04 flags
- GC log-rotation support
- NUMA collector enhancements
- ThreadDumpPath support
- Garbage-First garbage collector (-XX:+UseG1GC)
- jmap, jinfo, and jstack tools included in JDK 6.0.03
- Additional Java Web Start documentation
- B JDK/JRE 5.0.n Usage Notes
- Using Java 2 JNI on HP-UX
- Garbage collectors: Parallel and Concurrent Mark Sweep
- Allocating physical memory and swap in the Java heap
- Asian TrueType fonts and Asian locales
- Date/Time methods defaults
- Profiling
- Closing a socket (PA-RISC only)
- Compatibility with previous releases
- Java Cryptography Extension (JCE) policy files
- Allocation Site Statistics and Zero Preparation -Xverbosegc
- IPv6 support on Java 5.0
- GC log-rotation support in 5.0
- ThreadDumpPath support in 5.0
- Dynamically loaded libraries in 5.0
- Performance improvement for String.intern()
- Configuring the Java Runtime Plug-In
- CLASSPATH environment variable
- Java Web Start technology usage
- C SDK/RTE 1.4.2.n Usage Notes
- Removing support for unwanted architectures in the JRE
- Support for dynamic thread local storage (TLS)
- Signal Chaining functionality
- Using Java 2 JNI on HP-UX
- HotSpot JVM options
- Garbage collectors: Parallel and Concurrent mark sweep
- Allocating physical memory and swap in the Java heap
- Asian TrueType fonts and Asian locales
- Date/Time methods defaults
- Profiling
- Closing a socket when accept or read is pending (PA-RISC) - new patch information!
- Compatibility with previous releases
- Runtime Plug-In usage and configuration
- GC log-rotation support
- ThreadDumpPath support
- D Additional Resources
- Index
1. Use the option -XX:MainThreadStackSize=<value> to increase the primordial
thread stack size, However be aware that -XX options are non-standard options,
and are liable to change from release to release.
2. Use the -Xss option to set the thread stack size. This workaround may be less
desirable because -Xss sets the stack size for all threads, not just the primordial
thread. For example, if your application has 100 threads and you set the maximum
thread stack size to 4M with the -Xss option, the application would use nearly
400MB of address space just for thread stacks. If you did not use the -Xss option,
the application would have only used 50MB (512k (the default -Xss value) * 100
threads) of address and swap space.
3. Change the application so as to call JNI_CreateJavaVMfrom a non primordial
thread. That is, create a new thread with an appropriate stack size, using
pthread_create and use this new thread to initialise the JVM.
Non-Main/Primordial thread stack size limits
The default stack size for 1.4 64-bit mode threads created by the JVM is 1MB. On
PA-RISC 32 and 64-bit systems, the default stack size for threads created using the
pthread library is 64KB.
Here are some suggestions to work around stack overflow problems in threads other
than the main thread:
1. If the thread is created in native code and is attached to Java™ through
JNI_AttachCurrentThread, increase the stack size attribute when creating the
thread with pthread_create.
2. If the thread is created inside Java™ and there is a stack overflow condition, increase
the thread stack size with -Xss<n>
Dynamically loading the Hotspot JVM (SDK 1.3.1.x and 1.4.2.x PA-RISC)
Normally you would link against the JRE and use HotSpot, but sometimes you might
want to load the JVM dynamically, especially if you are integrating Java™ with legacy
applications.
(The example for Dynamically loading the Classic JRE can now be found in the
Appendix.)
Non-Main/Primordial thread stack size limits 59