YourKit Operations

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

Internal

Logging

The log files are created in ~/.yjp/log.

Diagnosing a Memory Leak

A memory leak represents an unwanted accumulation of object instances on the heap. Memory leak diagnosis consists of:

  • determining there is a memory leak
  • identifying the object instances that leak
  • identifying the reason the leaked object instances are held in memory

For concepts used in memory leak diagnosis, see Java Memory Concepts and YourKit Concepts for Memory Profiling.

Memory Leak Symptoms

The most obvious symptom of a memory leak is the continuous increase in the old generation footprint, after successive full garbage collections. This behavior can be determined by analyzing the garbage collection logs, and it is visible in the form of a monotonously increasing occupancy level. Full garbage collections can be forced from the profiler UI. Most OutOfMemoryErrors (but not all of them) are also an indication of memory leak.

Identifying Object Instances that Leak

TODO:

Objects (+/-) displays the difference in object count for instances of the specified class. A positive value means that snapshot 2 (the later memory state) has more objects.

Size (+/-) displays the difference in shallow size associated with the specified class instances. A positive value means that the corresponding instances in snapshot 2 (the later memory state) have a larger shallow memory footprint.

The percentage associated with the change in size is calculated relative to the total size of all objects in the old snapshot: 100% of size corresponds to the total size of all objects in the old snapshot.

TODO - factor in dominators.

Diagnosing Elevated Steady State Memory Level

This procedure can be used in diagnosing elevated steady state memory level.

TODO

Diagnosing Excessive Garbage Collection

For concepts used in diagnosing excessive garbage collection, see YourKit Concepts for Memory Profiling.

Procedure:

https://www.yourkit.com/docs/java/help/excessive_gc.jsp

Manually Configure Target JVM for Remote Profiling

Manually Configure Target JVM for Remote Profiling

Connect to a Remote Instrumented JVM via SSH

Before attempting to connect, the remote JVM should be instrumented as described in Manually Configure Target JVM for Remote Profiling.

Profile remote Java EE server or application ... -> Main Tab

Connection name: usually named after the host name.

Host IP or address: Address of the machine where Java processes run.

Application discovery method -> Advanced -> SSH user.

For "Authentication settings" the password or the private key can be used.

The connection can then be tested with "Test Connection".

Connect to a Remote Instrumented JVM via an SSH Tunnel

TODO.

Maven and YourKit

TODO: http://localhost:9627/personal/Wiki.jsp?page=MavenAndYourKit