AI-powered JVM diagnostics tool โ analyze heap dumps, thread dumps, and GC logs
1.3K
AI-powered analysis for Java heap dumps, thread dumps, and GC logs. Upload your diagnostic files and get actionable insights powered by any OpenAI-compatible LLM. Includes an MCP server for AI agent integration and a built-in AI chat for conversational heap dump analysis.
docker run -d \
--name jvm-diagnostics \
-p 8080:8080 \
-v jvm-uploads:/data/uploads \
barishoku/jvm-dump-analyzer:latest
Open http://localhost:8080โ โ a setup wizard will guide you through API key configuration on first launch.
.hprof)Upload a heap dump and get:
Under the hood, the app uses Eclipse Memory Analyzer (MAT) โ bundled in the image โ to parse the .hprof file and extract a structured report, which is then sent to the AI for interpretation.
.tdump, .txt)Upload a thread dump and get:
Upload a GC log and get:
Exposes heap dump analysis tools via an SSE-based MCP server that any AI agent can connect to:
get_heap_summary, get_leak_suspects, get_class_histogram, get_dominator_tree, get_top_consumers, run_oql_query, get_thread_stacksConnect to http://localhost:8080/mcp/sse after uploading a heap dump file.
Chat with your heap dump directly from the browser โ no external agent needed:
On first launch, the app opens a setup wizard at /setup where you can configure:
openai/gpt-4o)0.3)Settings are persisted in /root/.jvm-diagnostics/config.properties inside the container.
You can change these anytime at /settings.
All settings can also be passed as environment variables (these override the config file):
| Variable | Description | Default |
|---|---|---|
OPENROUTER_API_KEY | API key for AI provider | (required) |
OPENROUTER_BASE_URL | AI API endpoint | https://openrouter.ai/api |
AI_MODEL | Model name | openai/gpt-4o |
AI_TEMPERATURE | Response temperature (0-2) | 0.3 |
AI_TRUST_INSECURE_CERTS | Trust self-signed TLS certs | false |
APP_STORAGE_LOCATION | Upload directory | /data/uploads |
MAT_HEAP_SIZE | Heap for MAT analysis | 4g |
APP_MAT_TIMEOUT_MINUTES | MAT analysis timeout | 30 |
JAVA_OPTS | JVM options | -Xms512m -Xmx2g |
docker run -d \
--name jvm-diagnostics \
-p 8080:8080 \
-e OPENROUTER_API_KEY=sk-or-v1-your-key \
-e AI_MODEL=anthropic/claude-sonnet-4 \
-e MAT_HEAP_SIZE=8g \
-v jvm-uploads:/data/uploads \
barishoku/jvm-dump-analyzer:latest
services:
jvm-diagnostics:
image: barishoku/jvm-dump-analyzer:latest
ports:
- "8080:8080"
environment:
- OPENROUTER_API_KEY=sk-or-v1-your-key
- AI_MODEL=openai/gpt-4o
- MAT_HEAP_SIZE=4g
- JAVA_OPTS=-Xms512m -Xmx2g
volumes:
- upload-data:/data/uploads
restart: unless-stopped
volumes:
upload-data:
The system prompts sent to the AI can be fully customized from the Settings page (/settings). Each analysis type (Heap Dump, Thread Dump, GC Log) has its own prompt that you can edit. The original default prompts are always preserved and can be restored with one click.
This application works with any OpenAI-compatible API. To use a self-hosted model:
OPENROUTER_BASE_URL to your model's endpoint (e.g., https://my-llm.internal/v1)AI_MODEL to your model nameAI_TRUST_INSECURE_CERTS=trueCompatible with: Ollama, vLLM, text-generation-inference, LocalAI, LMStudio, and any OpenAI-compatible server.
| Architecture | Status |
|---|---|
linux/amd64 | โ Supported |
linux/arm64 | โ Supported |
| Heap Dump Size | Recommended MAT_HEAP_SIZE | Recommended JAVA_OPTS |
|---|---|---|
| < 500MB | 2g | -Xms256m -Xmx1g |
| 500MB โ 2GB | 4g | -Xms512m -Xmx2g |
| 2GB โ 8GB | 8g | -Xms1g -Xmx4g |
| > 8GB | 16g | -Xms2g -Xmx8g |
Tip:
MAT_HEAP_SIZEcontrols the heap allocated to Eclipse MAT for parsing.hproffiles. For large dumps, this needs to be large enough to hold the dump's object graph in memory.
Mount a volume to /data/uploads to persist uploaded files across container restarts:
-v /path/on/host:/data/uploads
Settings are stored at /root/.jvm-diagnostics/config.properties.
MIT
Content type
Image
Digest
sha256:40e5b0f1fโฆ
Size
289.2 MB
Last updated
4 months ago
docker pull barishoku/jvm-dump-analyzer