Oracle Application Diagnostics for Java is a solution for diagnosing applications in production environments and was implemented by enhancing the native diagnostic capabilities of the Java Virtual Machine (JVM). Here are some of the key features taken from here:
- Low overhead - there is no impact on the application on which the monitoring is done. Examples of application resource consumption include requests waiting on database, I/O, network, etc.
- Real-time transaction tracing - used to view the application activity (such as threads and their execution stack, waiting time due to locks, etc).
- Cross-tier correlation with Database - thus showing the state in which the database is (i.e. locks, tables, SQL statements that cause problems).
- Memory leak detection and analysis - abnormalities in memory consumption are detected; heap dumps can be taken without impacting the application running.
- Multiple platforms supported - runs on all major application servers.