spark for Minecraft: CPU, Memory, and Server Health Profiling
A performance profiler for Minecraft clients, servers, and proxies.
At a glance
- What is it?
- lucko/spark is a GPL-3.0 Java profiler for Minecraft clients, servers, and proxies. It combines CPU sampling, memory inspection, health reporting, and an online call graph viewer across several Minecraft platforms.
- Who is it for?
- Adopt spark when you need a low-setup diagnostic view of Minecraft performance across client, server, or proxy targets. Do not treat its heap summary as a replacement for a full memory analysis tool.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 16 days ago.
- What is it written in?
- Mainly Java, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What spark covers across Minecraft platforms
spark addresses a specific operational problem: finding the source of Minecraft performance problems such as lag, low tick rate, high CPU usage, memory pressure, and server hangs. The repository describes support for Minecraft clients, servers, and proxies rather than limiting the tool to one server implementation. Its repository layout includes modules for Bukkit, BungeeCord, Fabric, Forge, Minecraft, NeoForge, Paper, Sponge, Velocity, and a standalone agent. That breadth matters because operators may need to profile the same recurring symptom across different parts of a Minecraft deployment.
The project is divided into three functional areas. CPU Profiling diagnoses performance issues, Memory Inspection provides heap and garbage collection views, and Server Health Reporting summarizes operational metrics. This is more focused than a general-purpose Java profiler because the examples and commands are framed around Minecraft behavior, including tick rate and tick duration. The intended audience is therefore an operator or developer who wants actionable evidence from a live Minecraft environment, rather than someone looking for a generic JVM laboratory.
How CPU sampling becomes a call graph
The CPU Profiler samples statistical data about system activity and constructs a call graph from the samples. The call graph is then displayed in an online viewer, where the user can inspect the tree structure and apply deobfuscation mappings. That output is designed to make a production issue easier to interpret than a raw stream of profiler events, although the README does not describe every detail of the sampling implementation.
spark provides two profiler engines. Native/Async uses the async-profiler library and is available only on Linux and macOS systems. Java uses ThreadMXBean and is described as an improved version of WarmRoast. The engine choice therefore depends partly on the host operating system. The Java path is relevant for environments where the native library cannot be used, while Native/Async is the documented option for supported systems.
The profiler can target specific threads, sample at a chosen interval, or record only laggy periods. Those controls matter for Minecraft servers because a profile collected across every thread can mix infrastructure, proxy, plugin, and game work into one graph. A targeted or lag-triggered capture can narrow the evidence, but the README does not document a complete command reference for these options. It links to the documentation and usage guides for that purpose.
Memory inspection and garbage collection evidence
spark's memory tools cover several different diagnostic needs. Heap Summary presents basic information about the JVM heap, including memory usage and instance counts by class. The README explicitly limits this feature: it is not intended to replace proper memory analysis tools. That distinction prevents a misleading adoption decision. A summary can identify broad pressure or class-count patterns, but it does not by itself provide the depth promised by a full heap investigation.
Heap Dump creates a full HPROF snapshot of the server's JVM heap. The dump may be compressed and can then be opened with conventional analysis tools. This is the more complete artifact for later inspection, although the README does not document storage requirements, retention behavior, or how dumps are delivered. Those operational details should be checked before enabling large captures on a production server.
GC Monitoring watches garbage collection activity and relates collection events to game server hangs. It shows how long collections take and how much memory they free, including frequency and duration for young and old generation collections. That data can inform decisions about GC tuning flags. spark is not itself documented as a garbage collector replacement or a full JVM memory laboratory. Its value here is placing GC events beside the timing context of a Minecraft server.
Server health metrics for tick-related problems
Server Health Reporting collects TPS, tick durations, CPU usage, memory usage, and disk usage. Tick duration is available as a minimum, maximum, and average, while CPU reporting distinguishes process usage from overall system usage. These categories map directly to common server investigations: a low TPS result can be compared with long ticks, CPU load, and memory pressure rather than interpreted by itself.
spark can also monitor individual ticks and send a report when one tick exceeds a configured threshold. According to the README, this feature can help identify trends and relate performance problems to other system or game events. The README does not provide the command syntax or configuration keys for that threshold, so an exact setup example would be guesswork.
The health reports are most useful as context for profiler captures. A CPU call graph can identify where sampled execution time went, while health metrics show when the server became slow and what the surrounding resource conditions were. The tool does not promise automatic root-cause conclusions. Interpretation still requires reading the graph, health report, and, when relevant, heap or GC evidence together.
Installing spark and taking a first reading
The README does not provide a package-manager command, Gradle task, download filename, or platform-specific installation recipe. It directs users to the official downloads page for the latest plugin or mod downloads and to the documentation for usage guides. Because the repository contains several platform modules, selecting the artifact requires matching the target environment rather than copying one generic install command.
For a first server-health reading, the README gives one concrete command:
/tpsThe documentation says this command provides a more accurate view of TPS. Its output should be treated as a starting point for investigation, not as a complete diagnosis. If TPS is low, the next evidence should come from spark's tick duration, CPU, memory, GC, or profiler features, depending on the symptom.
The repository includes a `gradlew` script and Gradle build files, but the README does not document a supported build-and-install procedure for end users. The `gradlew` file should not be treated as an installation instruction without consulting the project's build documentation or release artifacts. This distinction matters because a source checkout and a downloadable plugin or mod are different distribution paths.
Where spark is constrained compared with alternatives
The clearest limitation is the scope of Heap Summary. spark describes it as a basic snapshot and explicitly says it is not a full replacement for proper memory analysis tools. If an investigation requires deep object-retention analysis, allocation-path investigation, or full inspection of an HPROF file, spark can produce the dump, but the resulting snapshot still needs a conventional analysis tool.
Platform support also introduces a host constraint. Native/Async profiling is documented as available only on Linux and macOS. Operators on other systems cannot assume that this engine is available and should use the documented Java engine instead. The README does not provide a detailed comparison of output quality or overhead between the two engines, so it is not possible to claim that one is always preferable.
Compared with Minecraft timings, WarmRoast, or other profiles, spark directs users to a separate comparison page. The README does not reproduce that comparison, so it does not establish which tool wins for a particular workload. WarmRoast is also a historical starting point because spark is a fork of it. In practice, spark adds memory and health-reporting tools, multiple platform modules, configurable sampling, and an online viewer, while WarmRoast refers to the CPU profiling lineage rather than this full combined toolset.
Maintenance signals and licensing boundaries
The repository is not archived. Its last push was on 2026-10-07. That date is a maintenance signal available from the repository record, but it is not proof of a release cadence or of compatibility with every current Minecraft version. The repository has no GitHub releases listed in the repository record, so users should not infer a regular release schedule from that absence alone.
The main project is released under GNU GPLv3. The spark API submodule is released under the more permissive MIT license. Those are separate licensing statements and should be checked against the exact files or modules being distributed. This is not legal advice, but it identifies where a technical evaluation also needs a licensing review. The README points to `LICENSE.txt` and `spark-api/LICENSE.txt` for the full terms.
The project has no GitHub releases in the repository record, but the README links to a downloads page for current plugin and mod downloads. That creates an operational distinction between source maintenance and artifact delivery. Verify the matching platform module, the intended artifact, and its license before adding it to a server distribution.
Editorial conclusion
Adopt spark when you need a low-setup diagnostic view of Minecraft performance across client, server, or proxy targets. Do not treat its heap summary as a replacement for a full memory analysis tool. Before deployment, verify the correct platform artifact, confirm whether your operating system supports Native/Async profiling, and review the GPL-3.0 licensing terms with your distribution model.
Frequently asked questions
How do I install spark on my Minecraft server?
The README directs users to the official downloads page for the latest plugin or mod downloads. It does not provide a platform-specific installation command or artifact name, so the exact installation step depends on the server platform.
Can spark replace a full memory analysis tool?
No for Heap Summary. The README says Heap Summary is not intended as a full replacement for proper memory analysis tools. spark can produce a full HPROF heap dump for inspection with conventional analysis tools.
Which profiler engine does spark use, and where is Native/Async available?
spark has Native/Async and Java profiler engines. Native/Async uses async-profiler and is available only on Linux and macOS, while the Java engine uses ThreadMXBean.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/lucko-spark)Was this useful?