JProfiler is just that: simple and powerful at the same time. Configuring sessions is straight-forward, third party integrations make getting started a breeze and profiling data is presented in a natural way. On all levels, JProfiler has been carefully designed to help you get started with solving your problems. Supported architectures: x86, x64/AMD64. Supported versions: 10/8/7, Server 2019/2016/2012.
JProfiler's intuitive UI helps you resolve performance bottlenecks, pin down memory leaks and understand threading issues.
Exceptional ease of use
Jprofiler Vs Yourkit
When you profile, you need the most powerful tool you can get. At the same time, you do not want to spend time learning how to use the tool. JProfiler is just that: simple and powerful at the same time. Configuring sessions is straight-forward, third party integrations make getting started a breeze and profiling data is presented in a natural way. On all levels, JProfiler has been carefully designed to help you get started with solving your problems.
Database profiling for JDBC, JPA and NoSQL
JProfiler is a Java profiling software targeted at Java Enterprise Edition (EE) and Java Standard Edition (SE) applications. JProfiler combines Central Processing Unit (CPU) profiling, thread profiling, and memory profiling in one application. The technology helps users find performance bottlenecks, memory leaks and understand threading issues.
Database calls are the top reasons for performance problems in business applications. JProfiler's JDBC and JPA/Hibernate probes as well as the NoSQL probes for MongoDB, Cassandra and HBase show the reasons for slow database access and how slow statements are called by your code. From the JDBC timeline view that shows you all JDBC connections with their activities, through the hot spots view that shows you slow statements to various telemetry views and a list of single events, the database probes are an essential tool for getting insight into your database layer.
Excellent support for Java Enterprise Edition
Dedicated support for JEE is present in most views in JProfiler. For example, in the JEE aggregation level you see the call tree in terms of the JEE components in your application. In addition, the call tree is split up for each request URI. Also, JProfiler adds a semantic layer on top of the low-level profiling data, like JDBC, JPA/Hibernate, JMS and JNDI calls that are presented in the CPU profiling views. With its JEE support, JProfiler bridges the gap between a code profiler and a high-level JEE monitoring tool.
Higher level profiling data
JProfiler has a number of probes that show you higher level data from interesting subsystems in the JRE. In addition to the Java EE subsystems like JDBC, JPA/Hibernate, JSP/Servlets, JMS, web services and JNDI, JProfiler also presents high level information about RMI calls, files, sockets and processes. Each of these probes has its own set of useful views that gives you general insight, highlights performance problems and allows you to trace single events. And what's more, all these views are also available for your own custom probes that you can configure on the fly within JProfiler.
Stellar analysis of memory leaks
Finding a memory leak can be impossible without the right tool. JProfiler's heap walker offers you an intuitive interface to solve both simple and complex memory problems. 5 different views and lots of inspections show different aspects of the current set of objects. Each view provides you with essential insights on the selected objects and lets you switch to different objects sets. Questions like why objects are not garbage collected are answered with a single click of the mouse.
Extensive QA capabilities
JProfiler is ideally suited as a QA tool, both during development as well as for dedicated QA teams. The rich functionality around snapshot comparisons makes it easy to track progress. JProfiler has strong support for command line operations. This includes the ability to profile, export snapshot data and create snapshots comparisons from the command line. The ant tasks bundled with JProfiler allow you to perform all command line operations from your build script.
Broadest support for platforms, IDEs and application servers
JProfiler integrates into your environment: We provide native agent libraries for a wide range of platforms, both for 32-bit and 64-bit JVMs. Integrations into all popular IDEs makes profiling during development as easy as running your application. And the large number of integrations wizards for nearly all application servers on the market ensures that you can get started with a few clicks and not with reading documentation.
I had to figure out what impact my change would have on the memory usage of the application.
With my workspace setup, where I have a main method I could call the class in Eclipse, I’ve installed Jprofiler(https://www.ej-technologies.com/download/jprofiler/files) on my machine, which profiles the java metrics, which is good for cpu or memory analysis. I’ve installed the plugin as documented for Eclipse and started using it.
Jprofiler is super easy and intuitive to use- If you are running anything on jvms, it’ll detect it on your host machine, show you the list of jvms and all you need to do is to click on it and set some options for the data dashboard.
The one thing I wanted to talk about is how to use this for the app that are deployed on a container.
In my case, I’ve had a Dockerfile for building an application. In the Dockerfile, I’ve added the following line to install Jprofiler inside the container.
Make an edit for the version you’re actually using!!!
RUN wget http://download-keycdn.ej-technologies.com/jprofiler/jprofiler_linux_10_0_4.tar.gz -P /tmp/ &&
tar -xzf /tmp/jprofiler_linux_10_0_4.tar.gz -C /usr/local &&
rm /tmp/jprofiler_linux_10_0_4.tar.gz
ENV JPAGENT_PATH='-agentpath:/usr/local/jprofiler10/bin/linux-x64/libjprofilerti.so=nowait'
EXPOSE 8849
What it does is that it downloads the jprofiler linux version from ej-technologies unpack the tar expose the port that I'll later map to my host machine for the Jprofiler GUI connection.
In my docker-compose.yml file (because I used docker-compose for running the orchestration, if you are not using the orchestration, you can do so by adding parameters in docker run command) I've added the CATALINA_OPTS environment
Jprofiler 12 Key
CATALINA_OPTS: '-agentpath:/usr/local/jprofiler10.0.4/bin/linux-x64/libjprofilerti.so=port=8849'
10.0.4 is the latest version I can now use, but if you wish to use a different version, you can adjust it accordingly.
Jprofiler 6
And one last thing, you'll have to expose the port to your host machine (This is all true when using the Docker for Mac) because you'll attach your host machine's Jprofiler to the container using 'localhost.'
So it'll be
ports: '8849:8849'
The number for the port can be configurable, and I just chose to use the 8849 due to many examples I found online.
Once that is done, you'll start the container by docker-compose or docker run and finally have Jprofiler up. On this screen, configure the field as accordingly. For example,
Jprofiler Tutorial
If you click on start, your container will start the process and Jprofiler will show you a set of graphs you'll find useful.
Reference: http://geekspearls.blogspot.com/2016/08/configure-jprofiler-92-to-profiling.html