{"id":16817986,"url":"https://github.com/igr/tdv","last_synced_at":"2025-06-25T03:08:56.465Z","repository":{"id":225562350,"uuid":"766270239","full_name":"igr/tdv","owner":"igr","description":"Thread Dump Analyzer","archived":false,"fork":false,"pushed_at":"2024-03-27T21:28:22.000Z","size":1148,"stargazers_count":32,"open_issues_count":2,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-04T03:11:17.499Z","etag":null,"topics":["thread-dump"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/igr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"igr"}},"created_at":"2024-03-02T19:52:07.000Z","updated_at":"2025-03-24T21:51:54.000Z","dependencies_parsed_at":"2024-03-26T10:34:49.310Z","dependency_job_id":"56962948-5fb6-49ef-a8f1-a2dd18d4f803","html_url":"https://github.com/igr/tdv","commit_stats":null,"previous_names":["igr/tdv"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/igr/tdv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igr%2Ftdv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igr%2Ftdv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igr%2Ftdv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igr%2Ftdv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/igr","download_url":"https://codeload.github.com/igr/tdv/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igr%2Ftdv/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261795334,"owners_count":23210620,"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","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":["thread-dump"],"created_at":"2024-10-13T10:48:54.833Z","updated_at":"2025-06-25T03:08:56.441Z","avatar_url":"https://github.com/igr.png","language":"Kotlin","readme":"# Thread Dump Viewer\n\n🚀 **Offline** Thread Dump Analyzer.\n\nDisclaimer: While I am making this for my own use, I will _try_ to fix reported issues, as much time allows me to 🤷‍♂️.\n\n☕️ You can still [buy me a coffee](https://www.buymeacoffee.com/oblac) :)\n\n## Usage\n\nDownload the fat jar and run it:\n\n```shell\njava -jar tdv-X.Y.Z-all.jar \u003cthread-dump-file\u003e[.gz]\n```\n\nThe input may be a 1) raw thread dump or 2) a _gzipped_ thread dump.\n\nThe report will be generated in the `out` subfolder as HTML file.\nIt is a huge report, and it is not beautiful, but it is functional.\n\n## TDV Report\n\nThe report contains the following sections:\n\n+ [Thread Stats](doc/report.md#-threads-stats) - general stats about threads (all, application, system)\n+ [Tomcat](doc/report.md#-tomcat) - Tomcat stats (if detected)\n+ [Daemon Stats](doc/report.md#-daemon-stats) - stats about daemon threads\n+ [GC Stats](doc/report.md#-gc-stats) - stats about garbage collection\n+ [Pools](doc/report.md#-pools) - detected thread pools\n+ [Blocks](doc/report.md#-blocks) - thread blocking analysis\n+ [Flamegraph](doc/report.md#-flamegraph) - interactive flamegraph of stack traces\n+ [Call Tree](doc/report.md#-call-tree) - call tree\n+ [Exceptions](doc/report.md#-exceptions) - all captured exceptions\n+ [CPU consuming threads](doc/report.md#-cpu-consuming-threads) - threads sorted by CPU consumption\n+ [Threads with identical stack trace](doc/report.md#-threads-with-identical-stack-trace)\n+ [List of missing locks](doc/report.md#-list-of-missing-locks) - locks that are not released\n\n\n## TDV SQL Console\n\nYes, you can query the thread dump using SQL.\n\n+ [SQL Console](doc/console.md)\n\n## TODO\n\n+ [X] Stats per thread pool\n+ [ ] Deadlocks detection (as soon as I get a thread dump with a deadlock)\n+ [ ] Detect complex deadlocks (e.g. A -\u003e B -\u003e C -\u003e A)\n+ [ ] Thread histogram per priorities\n+ [ ] Latest executed methods?]\n","funding_links":["https://github.com/sponsors/igr","https://www.buymeacoffee.com/oblac"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figr%2Ftdv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Figr%2Ftdv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figr%2Ftdv/lists"}