Eclipse Jifa is a web application based on the Eclipse Memory Analyser Tooling (MAT) that provides HTTP services so that users can view the heap dump files analysis through a browser. Users can deploy Jifa to their production environments, and share the same analysis result to different users via their browsers, we believe it's a more convenient way to troubleshoot Java heap issues.
Eclipse Jifa uses Vert.x as the main backend framework, and uses Vue 2.0 as the frontend framework.
Currently, supported features:
Heap dump Analysis:
- Overview
- Leak Suspects
- GC Roots
- Dominator Tree
- Thread Overview
- OQL
- Other features
We believe that many companies have encountered problems when troubleshooting Java problems in their production environments, and we hope that Jifa will grow into a popular product to help developers quickly resolve production problems.
Looking forward to more users and contributors :-)
- Join the Eclipse Jifa developer community mailing list. The community primarily uses this list for project announcements and administrative discussions amongst committers. Questions are welcome here as well.
- Ask a question or start a discussion via a GitHub issue.
- Slack channel: Eclipse Jifa
./gradlew build
cd build/distributions && unzip jifa-0.1.zip && cd jifa-0.1
./bin/worker
Jifa will now be reachable at http://localhost:8102.
Some options are provided to configure JIFA without modification to the source code.
Frontend can be configured by modifying the config.js
file provided in the application webroot, in the same
location as the index.html
file.
A sample config.js file is provided with JIFA which you can edit.
A configuration file can be specified as an environment variable.
export WORKER_OPTS=-Djifa.worker.config=/path/to/worker-config.json
./bin/worker
...
A sample configuration file is here:
{
"server.host": "0.0.0.0",
"server.port": 7101,
"server.uploadDir": "/mnt/data/uploads",
"api.prefix": "/jifa-api",
"hooks.className": "com.yourco.JifaHooksImplementation"
}
If you choose to provide a configuration file, the api.prefix
is the only required value. Otherwise,
defaults will apply. If you do not provide a configuration, defaults will apply. For more specific
customization, see next section.
The backend can be configured; JIFA has a number of hook points where it will call some code that you provide.
With hooks you can:
- Customize the HTTP server options
- Configure HTTP server routes to add authentication, error handling, health check URLs, etc.
- Customize the layout of heap files on the local file system.
To do so, you need to set configuration to refer to a new class which provides your custom implementations. You can provide the implementations by implementing this class and then updating configuration file.
In the configuration file, provide a hooks class name to use it and it will be loaded at service startup. See
the hooks.className
key. The JAR containing your class needs to be present on the classpath. You can use
export WORKER_OPTS="-Djifa.worker.config=/path/to/config.json -cp /path/to/hook.jar"
.
You will need to extract the common.jar
from the build process to get access to the JifaHooks interface.
If you would like to contribute to Jifa, please check out the contributing guide for more information.