{"id":15508522,"url":"https://github.com/jesperpedersen/javamemflame","last_synced_at":"2025-08-13T14:06:46.793Z","repository":{"id":34831669,"uuid":"38819863","full_name":"jesperpedersen/javamemflame","owner":"jesperpedersen","description":"A JVM agent to generate flame graphs for Java memory allocation","archived":false,"fork":false,"pushed_at":"2019-04-03T11:32:46.000Z","size":55,"stargazers_count":16,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-23T02:35:25.457Z","etag":null,"topics":["flamegraph","java-memory-allocation","jvm","memory-allocation"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jesperpedersen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-07-09T12:50:08.000Z","updated_at":"2024-10-16T13:10:16.000Z","dependencies_parsed_at":"2022-08-27T12:11:32.919Z","dependency_job_id":null,"html_url":"https://github.com/jesperpedersen/javamemflame","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jesperpedersen/javamemflame","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jesperpedersen%2Fjavamemflame","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jesperpedersen%2Fjavamemflame/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jesperpedersen%2Fjavamemflame/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jesperpedersen%2Fjavamemflame/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jesperpedersen","download_url":"https://codeload.github.com/jesperpedersen/javamemflame/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jesperpedersen%2Fjavamemflame/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270254160,"owners_count":24552985,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-13T02:00:09.904Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flamegraph","java-memory-allocation","jvm","memory-allocation"],"created_at":"2024-10-02T09:39:02.376Z","updated_at":"2025-08-13T14:06:46.743Z","avatar_url":"https://github.com/jesperpedersen.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"javamemflame will generate a flame graph with Java memory allocation information.\n\n## Requirements\n\n* Java 11\n* Apache Maven\n\n## Build\n\n```sh\nmvn clean package\n```\n\n## Usage\n\njavamemflame will record memory allocation during the lifetime of the JVM with\n\n```sh\njava -javaagent:/path/to/javamemflame.jar ...\n```\n\nThen the information can be turned into a flame graph using\n\n```sh\njava -jar /path/to/javamemflame.jar javamemflame-pid.jfr\n```\n\nThe result `javamemflame-pid.svg` can be viewed with any SVG viewer, like Firefox.\n\n## Agent options\n\nThe following agent options are supported.\n\n* `delay=\u003cnumber\u003e`: Delays the recording by the specified number of milliseconds.\n* `duration=\u003cnumber\u003e`: Record by the specified number of milliseconds.\n\nMultiple options can be selected using the ',' character, like\n\n```sh\njava -javaagent:/path/to/javamemflame.jar=duration=1000,delay=500 ...\n```\n\n## Main options\n\n### Output format\n\nThe output format of javamemflame can be controlled by\n\n```sh\njava -jar javamemflame.jar -o svg javamemflame-pid.jfr\n```\n\nSupported values\n\n* `svg`: Flame graph\n* `txt`: Text file\n\nThe text file can be turned into a flame graph using [FlameGraph](https://github.com/brendangregg/FlameGraph \"FlameGraph\")\n\n```sh\n/path/to/FlameGraph/flamegraph.pl --flamechart --color=java javamemflame-pid.txt \u003e javamemflame-pid.svg\n```\n\n### Threads\n\njavamemflame can use multiple threads to process the .jfr file faster by\n\n```sh\njava -jar javamemflame.jar -t 8 javamemflame-pid.jfr\n```\n\n### Cut off\n\njavamemflame can filter out allocations under the specified number, and merge them together\nunder a `Filtered` category. F.ex. cut off at 100 MB\n\n```sh\njava -jar javamemflame.jar -c 100000000 javamemflame-pid.jfr\n```\n\n### Title\n\nThe flame graph can be given a title using\n\n```sh\njava -jar javamemflame.jar --title \"My FlameGraph\" javamemflame-pid.jfr\n```\n\n### Count\n\nThe number of allocation counts, instead of their combined size, can be done using\n\n```sh\njava -jar javamemflame.jar -n javamemflame-pid.jfr\n```\n\n### JFR files\n\nMultiple .jfr files can be specified on the command line and their information will be merged\n\n```sh\njava -jar javamemflame.jar javamemflame-pid1.jfr javamemflame-pid2.jfr\n```\n\n### Package filtering\n\njavamemflame can filter on package names, and only include their information\n\n```sh\njava -jar javamemflame.jar javamemflame-pid.jfr package[,package]*\n```\n\n## Thanks to\n\n* [Brendan Gregg](http://github.com/brendangregg \"Brendan Gregg\")\n\n## License\n\nThis project is licensed under EPL v2. See the LICENSE file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjesperpedersen%2Fjavamemflame","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjesperpedersen%2Fjavamemflame","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjesperpedersen%2Fjavamemflame/lists"}