
ojob ojob.io/java/jsysbench port=8080 host=0.0.0.0 tests=retain,discard,pressure count=2000000 objectSize=256 batchSize=25000 pressureDuration=30s growthSteps=10 waitBetween=5s iterations=1 keepAlive=true
Runs a series of Java heap allocation / garbage collection stress tests (retained objects,
discarded/short-lived objects, GC pressure, an explicit full GC and staged heap growth)
while exposing live JVM heap and GC metrics, in OpenMetrics/Prometheus format, over HTTP
for scraping. Useful to compare how different JVM versions, vendors or flags (heap sizing,
GC algorithm, etc) behave under the same allocation workload: run this same ojob with
different "java" binaries/options and compare the resulting /metrics or console output.
| Name | Description |
|---|---|
| port | HTTP port where /metrics (OpenMetrics/Prometheus format) will be exposed |
| host | Network interface to bind the metrics HTTP server to (defaults to all interfaces) |
| tests | Comma delimited list of tests to run, in order (retain, discard, pressure, fullgc, growth) or "all" |
| count | Number of objects to allocate for the retain, discard and growth tests |
| objectSize | Approximate payload size, in characters/bytes, of each allocated object |
| batchSize | Number of allocations performed between each progress checkpoint (also the garbage batch size used by the discard and pressure tests) |
| pressureDuration | How long the GC pressure test keeps allocating short-lived garbage for (time abbreviation) |
| growthSteps | Number of incremental steps the growth test uses to reach count retained objects |
| waitBetween | Wait time between tests, right after a full GC used to reset the heap baseline (time abbreviation) |
| iterations | Number of times the selected test suite is repeated (0 = repeat forever) |
| keepAlive | If true keeps the metrics HTTP server (and process) running after all tests finish |