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.

  • Attaching to running applications: you can start the profiled application as usual, i.e. without any speical command line options, etc. You can then attach and detach the profiler to it at any time. When the profiler is detached, there is no instrumentation in the application, and thus no overhead.

  • 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 roots 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 registers 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 the leak.

  • 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 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 underlying JFluid 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 life

  • Processing collected data offline: you can save snapshots of collected results and process them offline.

Project Features

About this Project

Profiler was started in November 2009, is owned by Tomas Hurka, and has 58 members.
By use of this website, you agree to the NetBeans Policies and Terms of Use (revision 20160708.bf2ac18). © 2014, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo
 
 
Close
loading
Please Confirm
Close