IBM Support

IBM Java for Linux HowTo: Tracking Native Memory on Java 6 and 7 for Linux

Question & Answer


Question

IBM Java for Linux HowTo: Tracking Native Memory on Java 6 and 7 for Linux

Answer


This document provides step-by-step instructions for enabling tracking of native memory for IBM Java 6 and 7 on Linux.
Jump to section: (Background) (Setup) (Monitor) (Package) (Upload)
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. /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).
Overview
Step-by-Step Instructions

Step 1:

Background

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 It journals all memory allocations and deallocations in the jvm..

Step 2:

Setup

Check Java version:

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.log, in the application's working directory. Please ensure there is enough space in the filesystem for this large file.

Step 3:
Monitor

Monitor the process size until it grows sufficiently large. You can use the top -p PID command to monitor the virtual and physical memory usage.

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.

Step 4:

Package


Package the process_size.log and native_memory_PID.log

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

Step 5:

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

Step 6:

ACTION

Step 7:

ACTION

Step 8:

ACTION

Step 9:

ACTION

Step 10:

ACTION

Step 11:

ACTION

Step 12:

ACTION

Step 13:

ACTION

Step 14:

ACTION

Step 15:

ACTION

Step 16:

ACTION

Step 17:

ACTION

Step 18:

ACTION

Step 19:

ACTION

Step 20:

ACTION

Step 21:

ACTION

Document Type: Instruction
Content Type: Howto | Troubleshooting | Mustgather | Workaround | FAQ | Alert
Hardware: all Power | Power5 | Power6 | Power7 | Power8
Operating System: all Linux Versions
IBM Java: all Java Versions | Java 6.0 | Java 6.1 | Java 7.0 | Java 7.1 | Java 8.0
Author(s): John Carver
Reviewer(s): John Carver

[{"Product":{"code":"SG9NGS","label":"IBM Java"},"Business Unit":{"code":null,"label":null},"Component":"--","Platform":[{"code":"PF016","label":"Linux"}],"Version":"Version Independent","Edition":"","Line of Business":{"code":"LOB08","label":"Cognitive Systems"}}]

Document Information

Modified date:
17 June 2018

UID

isg3T1024366