{"id":29615131,"url":"https://github.com/koute/memory-profiler","last_synced_at":"2025-07-21T00:02:01.764Z","repository":{"id":37359939,"uuid":"187042471","full_name":"koute/bytehound","owner":"koute","description":"A memory profiler for Linux.","archived":false,"fork":false,"pushed_at":"2023-07-28T13:24:26.000Z","size":16615,"stargazers_count":4672,"open_issues_count":51,"forks_count":197,"subscribers_count":61,"default_branch":"master","last_synced_at":"2025-07-20T13:37:11.974Z","etag":null,"topics":["memory-profiler","memory-profiling","profiler","profiling"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/koute.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,"governance":null}},"created_at":"2019-05-16T14:19:45.000Z","updated_at":"2025-07-20T08:57:20.000Z","dependencies_parsed_at":"2022-07-14T05:00:33.264Z","dependency_job_id":"fbf0aad4-90c5-448c-87cc-d2bd36db8530","html_url":"https://github.com/koute/bytehound","commit_stats":null,"previous_names":["koute/memory-profiler","nokia/memory-profiler"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/koute/bytehound","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koute%2Fbytehound","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koute%2Fbytehound/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koute%2Fbytehound/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koute%2Fbytehound/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/koute","download_url":"https://codeload.github.com/koute/bytehound/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koute%2Fbytehound/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266217170,"owners_count":23894242,"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":["memory-profiler","memory-profiling","profiler","profiling"],"created_at":"2025-07-21T00:01:34.073Z","updated_at":"2025-07-21T00:02:01.717Z","avatar_url":"https://github.com/koute.png","language":"C","readme":"# Bytehound - a memory profiler for Linux\n\n## Features\n\n   * Can be used to analyze memory leaks, see where exactly the memory is being\n     consumed, identify temporary allocations and investigate excessive memory fragmentation\n   * Gathers every allocation and deallocation, along with full stack traces\n   * Can dynamically cull temporary allocations allowing you to profile over a long\n     period of time\n   * Uses a custom, tailor-made stack unwinding implementation which makes it\n     a lot cheaper than other similar tools, potentially up to orders of magnitude\n     faster in some cases\n   * Can export the data it gathered into various different formats; it can\n     export the data as JSON (so you can analyze it yourself if you want), as\n     Heaptrack (so you can use the excellent [Heaptrack GUI] for analysis)\n     and as a flamegraph\n   * Has its own Web-based GUI which can be used for analysis\n   * Can dynamically stream the profiling data to another machine instead\n     of saving it locally, which is useful for profiling on memory-constrained systems\n   * Supports AMD64, ARM, AArch64 and MIPS64 architectures (where MIPS64 requires a tiny out-of-tree kernel patch for `perf_event_open`)\n   * Supports profiling of applications which use jemalloc as their allocator (only works on AMD64 with the `jemallocator` crate)\n   * Supports an embedded DSL based on [Rhai](https://rhai.rs) to allow for programmatic\n     and/or automated data analysis\n\n[Heaptrack GUI]: https://github.com/KDE/heaptrack\n\n## Screenshots\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"screenshot_gui_memory_usage_graph.png\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"screenshot_gui_group_by_backtrace.png\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"screenshot_gui_scripting_console.png\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"screenshot_graph.png\"\u003e\n\u003c/p\u003e\n\n## Building\n\n1. Install GCC, Rust nightly (**only 1.62 or newer is supported**) and the Yarn package manager (for building the GUI)\n2. Build it:\n\n        $ cargo build --release -p bytehound-preload\n        $ cargo build --release -p bytehound-cli\n\n3. Grab the binaries from `target/release/libbytehound.so` and `target/release/bytehound`\n\n## Usage\n\n### Basic usage\n\n    $ export MEMORY_PROFILER_LOG=warn\n    $ LD_PRELOAD=./libbytehound.so ./your_application\n    $ ./bytehound server memory-profiling_*.dat\n\nThen open your Web browser and point it at `http://localhost:8080` to access the GUI.\n\n## Documentation\n\nYou can find the full documentation for the profiler in our [Memory profiling for fun and profit](https://koute.github.io/bytehound/) book.\n\n## Enabling full debug logs\n\nBy default the profiler is compiled with most of its debug logs disabled for performance reasons.\nTo reenable them be sure to recompile it with the `debug-logs` feature, e.g. like this:\n\n    $ cd preload\n    $ cargo build --release --features debug-logs\n\n## License\n\nLicensed under either of\n\n  * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n  * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n\n### Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n","funding_links":[],"categories":["开发工具","Rust","Development tools","Dev-Utilities"],"sub_categories":["剖析","Profiling"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoute%2Fmemory-profiler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkoute%2Fmemory-profiler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoute%2Fmemory-profiler/lists"}