DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Please enter at least three characters to search
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Because the DevOps movement has redefined engineering responsibilities, SREs now have to become stewards of observability strategy.

Apache Cassandra combines the benefits of major NoSQL databases to support data management needs not covered by traditional RDBMS vendors.

The software you build is only as secure as the code that powers it. Learn how malicious code creeps into your software supply chain.

Generative AI has transformed nearly every industry. How can you leverage GenAI to improve your productivity and efficiency?

Related

  • What Are Garbage Collection Logs, Thread Dumps, and Heap Dumps?
  • Introducing Graph Concepts in Java With Eclipse JNoSQL, Part 3: Understanding Janus
  • Introducing Graph Concepts in Java With Eclipse JNoSQL, Part 2: Understanding Neo4j
  • Introducing Graph Concepts in Java With Eclipse JNoSQL

Trending

  • Efficient API Communication With Spring WebClient
  • Introducing Graph Concepts in Java With Eclipse JNoSQL
  • The Evolution of Scalable and Resilient Container Infrastructure
  • How To Introduce a New API Quickly Using Quarkus and ChatGPT
  1. DZone
  2. Coding
  3. Frameworks
  4. Getting Started with Eclipse Jifa

Getting Started with Eclipse Jifa

In this blog post, discover how you can use Eclipse Jifa to identify potential performance bottlenecks in your Java applications.

By 
NaveenKumar Namachivayam user avatar
NaveenKumar Namachivayam
DZone Core CORE ·
Mar. 06, 22 · Tutorial
Likes (6)
Comment
Save
Tweet
Share
5.7K Views

Join the DZone community and get the full member experience.

Join For Free

I have been posting multiple videos about the Performance Engineering Series on the QAInsights channel, which will help you to get started with troubleshooting Java applications. In this blog post, we are going to see how you can use Eclipse Jifa to identify potential performance bottlenecks in your Java applications. Let us get started.

Eclipse Jifa

Eclipse Jifa (Java Issue Finder Assistant) is an open-source application to troubleshoot Java applications. The inception phase of Jifa was back in 2020 by Alibaba under the Eclipse Foundation. Developers from Netflix, Alibaba Cloud, and other developers are contributing to the Jifa project.

Jifa is a scalable web-based application, easy to deploy, and maintain. Right now, it supports the following analysis: Heap Dump, Thread Dump (an enterprise feature), and GC Log.

Jifa's frontend is Vue 2.0, and the backend is Eclipse Vert.x. Jifa's analytical engine consists of Heap Dump service and GC Log Analyzer.

Scalability can be achieved by deploying Jifa in a Master-Worker fashion, also known as the Map-Reduce pattern. Most of the performance testing tools use this technique to generate more load for the target application.

Install

There are multiple ways you can follow to install Jifa. The easiest way is to run the Docker container using the below command.

docker run -p 8102:8102 jifadocker/jifa-worker:demo

Jifa also supports Kubernetes and Master-Worker patterns for scalability, or you can build the artifacts using Gradle and deploy.

For personal use, I'd recommend Docker mode. For enterprise use, please use Master-Worker or Kubernetes patterns for the enterprise features.

Master-Worker Deployment

Before you get started, please make sure you have nodejs, npm, Gradle and JDK 11 is installed.

git clone https://github.com/eclipse/jifa

./gradlew buildJifa

cd jifa/deploy/default_pattern

./deploy_jifa.sh

Launch 127.0.0.1:8089

Jifa Home Page
Jifa Home Page
If you want to deploy only the workers, use the below commands.

cd deploy

./deploy_worker.sh

Launch 127.0.0.1:8102.

In Master-Worker mode, master node routes the user requests from the client to the workers and schedules new workers on-demand.

worker nodes perform the analysis.

Kubernetes

cd scripts/docker_images
./build_image.sh
cd ../..
cd deploy/k8s_pattern
./deploy.sh

Launch localhost:8089

Jifa Enterprise Features
Jifa Enterprise Features
In Kubernetes mode, workers can be orchestrated based on the analysis tasks. To release a pod, click on release button.
Release Worker
Release Worker

Heap Dump Analysis

Let us upload a sample heap dump to Jifa and play around with the features. There are multiple ways you can generate a heap dump. In this demo, I am going to upload a heap dump from JMeter, but you can upload any heap dump you want.

Launch Jifa, click on Heap Dump Analysis > Add Heap Dump file to upload the file.

Upload Heap Dump
Upload Heap Dump

Jifa supports various sources such as S3, OSS, URL, SCP or local for upload the file. Drag and drop the heap dump file (OpenJDK HPROF format) or click the Upload icon to upload.

Add Heap Dump file

Click analyze to get started. Check keep unreachable objects and click Confirm.

Heap Dump Analysis
Analyze
Once the analysis is complete, Jifa will display all the details.
Jifa Analysis
Jifa Analysis
The analyzed information might be familiar if you are familiar with Eclipse MAT. Jifa uses Eclipse MAT under the hood for Heap dump analysis to detect memory leaks for better performance. The following are the features of Heap Dump Analysis in Jifa:
  • Overview
  • Leak Suspects
  • GC Roots
  • Dominator Tree
  • Class Histogram
  • Unreachable Objects
  • Duplicated Classes
  • Class Loaders
  • Direct Byte Buffer
  • System Property
  • Thread Info
  • OQL
  • Other features

Jifa features an inspector panel where the search using the object address is possible to dive into the respective object. The Inspector panel can be toggled on/off under Settings.

Inspector Panel

Thread Dump Analysis

Go to Jifa home page and click on Thread Dump Analysis to upload a sample thread dump. Analyze the thread dump to view the output. Thread dump analysis helps to identify issues like thread locks, deadlocks, to understand threads' state and more.

Thread Dump Analysis
Thread Dump Analysis
The following are the features in Thread Dump Analysis.
  • Basic Information
  • Thread Overview
  • Thread Group Overview
  • Java Monitor
  • Stack Trace
  • Raw content

GC Log Analysis

Garbage Collection Log analysis helps to optimize GC settings, memory management and more. To generate a GC log, pass the -verbose:gc -Xlog:gc*:file=./gc.log to the JVM arguments for Java 9 or above. This will generate a GC log in the current directory.

Upload gc.log to Jifa to analyze.

Jifa supports the following for GC log analysis:

  • OpenJDK 8 and 11
  • Serial GC, Parallel GC, CMS GC, G1 GC, ZGC
GC Log Analysis
GC Log Analysis

The Overview tab features the problems and suggestions, metadata, and Key Performance Indicators.

Graph tab features visualizations about GC count, pause time, heap, and more.

GC Graphs
GC Graphs

GC Cause and Phase displays about GC activities such as Full GC, Young GC, and more and the pie chart.

GC Cause and Phase
GC Cause and Phase

GC Detail tab helps to filter the GC events, log time, and more.

GC Detail
GC Detail

Conclusion

Jifa is a great tool to identify potential memory leaks, thread issues for Java applications. If you do not have the ability to install GUI based tools like MAT, VisualVM, or if you do not have high memory to process large dump files, then Jifa can help you. Jifa supports multiple sources to upload the dump/log file. Jifa user interface is intuitive and easy to navigate. But navigating tree structure is cumbersome.

GC Log analysis in JIFA provides problems and suggestions, but for heap dump and thread dump, you need to wear a detective hat to troubleshoot the problems.

garbage collection Eclipse Dump (program)

Published at DZone with permission of NaveenKumar Namachivayam, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • What Are Garbage Collection Logs, Thread Dumps, and Heap Dumps?
  • Introducing Graph Concepts in Java With Eclipse JNoSQL, Part 3: Understanding Janus
  • Introducing Graph Concepts in Java With Eclipse JNoSQL, Part 2: Understanding Neo4j
  • Introducing Graph Concepts in Java With Eclipse JNoSQL

Partner Resources

×

Comments
Oops! Something Went Wrong

The likes didn't load as expected. Please refresh the page and try again.

ABOUT US

  • About DZone
  • Support and feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends:

Likes
There are no likes...yet! 👀
Be the first to like this post!
It looks like you're not logged in.
Sign in to see who liked this post!