NetBeans Profiler Features
The NetBeans Profiler includes the following features:
Low overhead profiling: you can profile just a subset of the application code - the rest of the code is not instrumented and
thus runs at full speed. The profiled subset and the kind of profiling (CPU, memory, etc.) can be changed at any moment during run time.
CPU Performance profiling: you can profile the entire application, or select a subset of its code to profile based on one or
more root methods that you are free to choose. For example, you can set the
doGet() method of your servlet as a root, and thus profile
only the code of this method and other methods that it calls. The rest of the Java code, including most of the code of your
Web/Application server, will run at full speed. Selective profiling based on chosen root methods appears to be a surprisingly good way to
reduce the performance overhead and obtain accurate results for heavily multithreaded applications under realistic workload.
Memory profiling: you can profile only object creation events, which imposes smaller overhead and allows you to detect
problems with excessive object allocations. If this is not enough, you can turn on object liveness profiling, that records both
object creation and reclamation events. It allows you to see the number, age, allocation paths, and other characteristics of objects
currently in memory. It also can help you to detect memory leaks.
Memory leak debugging: memory leaks are not uncommon with large Java applications. With most of the existing tools, it may
take hours to make sure there is really a memory leak, and then to identify leaking objects. Our technology can pinpoint leaking objects
for you immediately, based on the special pattern of allocations and reclamations (or lack thereof) that such objects typically
demonstrate. You can then check where these objects were allocated, which in many cases is sufficient for identifying the root cause of
Task-based profiling: profiling is a complex activity, which may require quite a bit of tuning, and thus learning the tool's
nuts and bolts. However, our task-based approach makes climbing the learning curve much easier, by first offering you several of the most
common tasks, such as standard CPU or memory profiling, or simple monitoring. In these tasks, most of the options are preset to the
most common values, and only the most important options are exposed to you. Once you learn more, you can switch to custom profiling,
where you can get a full advantage of the flexibility of the advanced NetBeans Profiler technology.
Threads profiling: you can observe threads & their activity during application execution. The threads profiling offers two
views of the threads: "Threads timeline", showing threads activity side-by-side, and "Thread details" showing detailed information
about one or more selected threads, including a list of all state changes in the thread's life
Processing collected data offline: you can save snapshots of collected results and process them offline.