Generic Term | Replace with |
JAVA_PATH PID |
The parent Java installation directory (e.g. /opt/ibm/java-ppc64_70). The process id of the active Java process (e.g. use "ps" command to check the PID column to identify the process). |
The Java 6 and 7 runtimes allocate native memory for the JIT compiled code, classes, class loaders, JNI allocations, direct byte buffer allocations, and thread stack allocations, etc. If you believe you are running out of native memory, you can use the Linux Native Tracker(LNT) library to trace memory allocations on the native heap. The Linux Native Tracker library, libnative_tracker.so can be built from the Linux Native Trackers source code (LinuxNativeTracker.zip), available at ftp://ftp.software.ibm.com/linux/tools/java/tools/LinuxNativeTracker.zip
JAVA_PATH/bin/java -verson
Ensure that it shows "Java 7 or Java 6"
Example: java -version
java version "1.7.0"
Unpack the tracker
tar xzf nativetracker.tgz
(Optional )Set the plaform
The makefile will detect the machine type and build the native tracker for the appropriate build. If a different build is desired, for example a 32 bit build while running on a 64 bit machine, set the PLATFORM value.
export PLATFORM=arch where arch is typically i686 or ppc
Enter the tracker directory
cd LinuxNativeTracker
Set the Java directory
export SDK=JAVA_PATH
Build the library
make
Once the build completes, install it
make install
The libnative_tracker.so will be moved to the JAVA_PATH/jre/lib/arch/ directory
Enable LNT on the Linux shell:
export IBM_NATIVETOOLS=memory_tracking
This option enables the memory tracking.
export PROFILER_WRITE_PERIOD_SECONDS=n
where "n" specifies the duration in seconds between writes. By default, data is written every 600 seconds (10 minutes)
export PROFILER_STACK_DEPTH=n
where "n" specifies how many frames will be listed in the stack trace. By default, the stack depth is 7.
Start your java application as normal. For example: java HelloWorld
Tracker output is redirected to the output file, native_memory_PID
top -p PID -d delay-time -n iterations
where PID is the process id, delay-time is the time between writes, and iterations is the number of writes
For instance, to monitor a java process id, 10303, every ten minutes for a two days enter:
top -p 10303 -d 600 -n 288 -b >> process_size.log
Once the process size grows to three times the application's Xmx (max heap) value, gracefully exit the application.
tar -cf - process_size.log native_memory_PID | gzip -c >PMR.MM-DD-YY.tgz
where PMR is the pmr number (ex. 44722,333,000)
and MM-DD-YY is the month, day, and year
Upload the packaged data or individual files to an IBM secured server using one of upload options provided on the "MustGather: How to upload diagnostic data and testcases to IBM" web page:
http://www-01.ibm.com/support/docview.wss?uid=isg3T1022619
Document Type: | Instruction |
Content Type: | Howto | Troubleshooting | Mustgather | Workaround | FAQ | Alert |
Hardware: | all Power | Power5 | Power6 | Power7 | Power8 |
Operating System: | all AIX Versions | AIX 6 | AIX 7 |
IBM Java: | all Java Versions | Java 5.0 | Java 6.0 | Java 6.1 | Java 7.0 | Java 7.1 | Java 8.0 |
Author(s): | First Last |
Reviewer(s): | First Last |