≡ Menu


JVM – Basic Operations

A Java application is launched with the java command which starts a JVM and runs the application. As an Application support engineer, there are few basic operations that you will typically perform on the JVM. Here are they:

Starting JVM:

Starting the JVM simply means starting the Java application. A Java application is started using the java command.

For example:

java HelloWorld 

java is the command

HelloWorld is the classfile without the .class extension

Note: Don’t use the .class extension in the java command. If you do, you will get an error

[ec2-user@java]$ java HelloWorld.class
Error: Could not find or load main class HelloWorld.class

There are numerous command line options for the java command. Here are some of the main ones you need to know.

Read More

JVM: Basic Framework

As an Application Support Engineer, you will invariably end up managing Java based applications. JVM (Java Virtual Machine) is the all-important process that runs the Java Application you are going to manage (which can be either custom developed by your development group, or a commercial off the shelf product). It is imperative that you have a very good understanding of how JVM works.

Note: Some of the material in this section will be very basic that experienced Administrators can choose to skip.

At a high level:

  1. Java is a high level programming language (this is the code). A java program is a text file(s) that is/are human readable.
  2. Javac is a compiler program that compiles the human readable java code in to machine readable byte code.
  3. JVM (Java virtual machine) is a process that runs the java byte code. It is an implementation of specification created by Sun/Oracle.

Read More


  1. Excessive number of objects of certain class
  2. Objects with unusually large size



Read More


  1. Automatic Leak Detection
  2. Objet Instance Tracking

Automatic Leak Detection


Read More





Read More

Ten things you need to know about Java memory leak


1.  Java Heap Memory leak is different from Native Memory leak


Read More

How to instrument a Java application with AppDynamics?


Read More

Introduction to APM: Benefits of APM


1. Historic Monitoring of Key Metrics



Read More

Introduction to APM (Application Performance Management)


Read More

Troubleshooting GC: Test your knowledge – Answers


1. The Java command line option to enable Verbose Garbage Collection is:

a. –DenableVerboseGC=true
b. –verboseGC=yes
c. –verbose:gc
d. –enable.verbose.gc
e. –XX:+VerboseGC

Answer: c

Explanation: -verbose:gc is the correct answer. All other options are invalid

2. Short lived and Long lived Java objects are stored in these regions of Heap, respectively

a. Tenured,OldGen
b. OldGen,Tenured
c. Tenured,newGen
d. YoungGen,OldGen
e. Tenured,nursery

Answer: d

Explanation: Short lived objects live in Young Generation (also known as nursery or new generation). When minor garbage collection cannot reclaim memory from objects that are still being used (referenced), they get moved to Old gen (via another hop at survivor space). Old gen is also known as tenured gen.

3. Your application uses lots of File Handles. The memory used to maintain these File Handles are stored in which part of JVM memory

a. PermGen
b. YoungGen
c. Tenured
d. OldGen
e. Native Memory

Answer: e

Explanation: Native memory is used for all Operating system level components (such as File handles, sockets etc). Native memory is also used for any native code (such as C libraries) that runs as part of your application. PermGen is used for Class objects (and in some versions, interned strings). Young,Tenured (oldgen) are used to store your application java objects.

4. You have just deployed a new Java application with ONLY out of the box tuning parameters. Upon using the application, users complain your application is extremely slow. By reviewing the verbose GC log file, you have identified that the frequency of GC is extremely high (once every few seconds). What is your best next step ?

a. Tune –Xms and –Xmx to provide reasonable amount of memory
b. Schedule regular automatic restarts of your application
c. Restart your application
d. Increase PermGen Space
e. Add CPU to your Host Server

Answer: a

Explanation: The default Max heap is not enough in most cases (this various by implementation, but typically 128 or 256 MB). So, the best action is to first increase the max heap (-Xmx). You may want to set –Xms (initial heap) to the same value as –Xmx if possible. Otherwise, you can go with half or ¾ th of the Max heap.

5. Your application just ran out memory (OutOfMemory Error) and it has produced a big heap dump file. What is the best tool to analyze this heap dump to find out what is filling up the memory

a. Verbose GC logs
b. Thread Dump analyzer
c. Eclipse MAT (Memory Analyzer)
d. IBM Pattern Modeling and Analysis Tool for Java garbage collector
e. Jstack

Answer: c

Explanation: Eclipse MAT (Memory Analyzer) is the tool to be used for analyzing Heap dumps. Verbose GC logs just show the GC activity in detail, Thread dump analyzer is for analyzing Thread dumps, IBM PMAT is for visualizing verbose GC logs and finally jstack is a command line tool that comes with JDK that can be used to take thread dumps on a running Java application.

Previous: Troubleshooting GC: Test your knowledge