Question & Answer
Question
IBM Java for Linux HowTo: Tracking Native Memory on Java 8 for Linux
Answer
The instructions in this document make references to generic terms in Italics that will need to be replaced with information specific to the support call and the environment. It is very important that consistent and accurate values be used in place of the Italicized generic terms when collecting the data to ensure the prompt and correct delivery of the data when uploaded.
Generic Term | Replace with |
JAVA_PATH PID |
The parent Java installation directory (e.g. /usr/java6 or /usr/java7_64). The process id of the active Java process (e.g. use "ps" command to check the PID column to identify the process). |
Background
The Java 8 runtime allocates native memory for the JIT compiled code, classes, class loaders, JNI allocations, direct byte buffer allocations, and thread stack allocations. If you believe you are running out of native memory, you can use the Linux Native Tracker library to trace memory allocations on the native heap. The Linux Native Tracker(LNT) library, libnative_tracker.so, is included with the Java 8 distribution. It journals all memory allocations and deallocations in the jvm.
Setup
JAVA_PATH/bin/java -verson
Ensure that it shows "Java 8"
Example: java -version
java version "1.8.0"
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" is the duration in seconds between writes. By default, data is written every 600 seconds (ten 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.log in the application's working directory
Monitor
Monitor
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.
Package
Package the process_size.log and native_memory_
tar -cf - process_size.log native_memory_PID.log
where PMR is the pmr number (ex. 44722,333,000)
and MM-DD-YY is the month, day, and year
Upload
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
ACTION
ACTION
ACTION
ACTION
ACTION
ACTION
ACTION
ACTION
ACTION
ACTION
ACTION
ACTION
ACTION
ACTION
ACTION
ACTION
Document Type: | Instruction |
Content Type: | Howto | Troubleshooting | Mustgather | Workaround | FAQ | Alert |
Hardware: | all Power | Power5 | Power6 | Power7 | Power8 |
Operating System: | all Linux |
IBM Java: | all Java Versions | Java 8.0 |
Author(s): | John Carver |
Reviewer(s): | John Carver |
Was this topic helpful?
Document Information
More support for:
IBM Java
Software version:
Version Independent
Operating system(s):
Linux
Document number:
629833
Modified date:
17 June 2018
UID
isg3T1024370