{"id":44119938,"url":"https://github.com/memtt/malt","last_synced_at":"2026-02-08T19:01:16.865Z","repository":{"id":29131297,"uuid":"120297442","full_name":"memtt/malt","owner":"memtt","description":"MALT is a MALloc Tracker to find where and how your made your memory allocations in C/C++/Fortran applications (and python in experimental status).","archived":false,"fork":false,"pushed_at":"2026-02-05T20:29:12.000Z","size":54954,"stargazers_count":124,"open_issues_count":46,"forks_count":22,"subscribers_count":7,"default_branch":"master","last_synced_at":"2026-02-06T05:16:20.525Z","etag":null,"topics":["allocation","allocation-profile","malloc","memory","profiler"],"latest_commit_sha":null,"homepage":"https://memtt.github.io/malt/","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/memtt.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":"LICENSE-fr.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"Authors.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-02-05T11:43:43.000Z","updated_at":"2026-02-05T20:29:16.000Z","dependencies_parsed_at":"2025-11-28T10:12:38.407Z","dependency_job_id":"d4e9a9b2-f4e9-474a-8a12-63d419d85923","html_url":"https://github.com/memtt/malt","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/memtt/malt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memtt%2Fmalt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memtt%2Fmalt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memtt%2Fmalt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memtt%2Fmalt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/memtt","download_url":"https://codeload.github.com/memtt/malt/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memtt%2Fmalt/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29240113,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T18:06:38.086Z","status":"ssl_error","status_checked_at":"2026-02-08T18:06:09.124Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["allocation","allocation-profile","malloc","memory","profiler"],"created_at":"2026-02-08T19:00:43.905Z","updated_at":"2026-02-08T19:01:16.856Z","avatar_url":"https://github.com/memtt.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"MALT : Malloc Tracker\n=====================\n\nWhat is it\n----------\n\nMALT is a memory tool to find where you allocate your memory. It also provides you some\nstatistics about memory usage and help to find memory leaks.\n\nIt is done to be used on laguages : **C**, **C++**, **Fortran**, **Rust** and **Python**.\n\n\u003cimg src='./screenshot.png' alt=\"Screenshot\" width=\"100%\"/\u003e\n\nDocumentation\n-------------\n\nYou will find all the details about using **MALT** into the Your will find the dependences into the [official documentation](http://memtt.github.io/malt/doc/latest/).\n\nDependences\n-----------\n\nYour will find the dependences into the [official documentation](http://memtt.github.io/malt/doc/latest/start/dependencies.html).\n\nHow to install\n--------------\n\nMALT use CMake for the build system but provide a simple configure wrapper for users\nfamiliar with autotools packaging so you can install by following the procedure :\n\n```shell\nmkdir build\ncd build\n../configure --prefix={YOUR_PREFIX}\nmake\nmake test\nmake install\n```\n\nYour will find the dependences into the [official documentation](http://memtt.github.io/malt/doc/latest/).\n\nHow to use\n----------\n\nMALT currently provides a dynamic library you need to preload in your application to\nwrap the default memory allocator. It provides two basic instrumentation modes.\n\nBy default MALT use backtrace to reconstruct you stack on malloc/free/... calls :\n\n```shell\nmalt {YOUR_PROGRAM} [OPTIONS]\n```\n\nYour will find the dependences into the [official documentation](http://memtt.github.io/malt/doc/latest/).\n\nUsing webview\n-------------\n\nYou can use the webview by calling command `malt-webview` as :\n\n```shell\nmalt-webview [-p PORT] [--no-auth] malt-YOUR_PROGRAM-1234.json\n```\n\nGenerate the static report (with less pages than the dynamic webview) :\n\n```shell\nmalt-webview --static ./report malt-YOUR_PROGRAM-1234.json\n# or just the summary page\nmalt-webview --static-summary ./report malt-YOUR_PROGRAM-1234.json\n```\n\nProfiling python\n----------------\n\n**Note:** This is currently **fresh released**, there are for sure still some issues.\n\nFirst you need to build MALT by enabling python support : you will need to have\nthe python headers (package `python3-dev or libpython3-dev or python3-devel`) on your plateform.\n\nIn practice MALT after being built will be able to run over various versions of python without beeing\nrebuilt as long as they follow the standard API which is currently stable. It should also work on the\npython delivered by [Anaconda](https://www.anaconda.com/).\n\nSupported version are currently python from **version 11**.\n\nDue to large number of memory allocations in python MALT currently have a large overhead over python.\nThere is in consequence several way to instrument your app which I sort in overhead increasing order.\n\n```bash\n# Use default mode (python-only)\nmalt-python ./script.py\n# profile without stacks\nmalt-python --profile python-no-stack ./script.py\n# Get C and Python stack as two distinct domains (not mixed)\nmalt-python --profile python-domains ./script.py\n# An approximativ method by sampling instead of tracking each stack (faster but not exact)\nmalt-python --profile python-sampling ./script.py\n# Similar but with less samples\nmalt-python --profile python-sampling-10M ./script.py\n# Similar but with less and less samples\nmalt-python --profile python-sampling-20M ./script.py\n# profile considering only python stacks (C is mapped under python)\nmalt-python --profile python-only ./script.py\n# Full instrumentation of Python + C\nmalt-python --profile python-full ./script.py\n```\n\n**Note**: The `malt-python` is just a wrapper over `malt` command profiding a different default\nprofile sepcific for python, you can also use directly the `malt` command.\n\n**Note**: The `malt-python` command is a temporary workaround, it might disapear in future.\n\nSimilar tools\n-------------\n\nIf you search similar tools all over the web you might find:\n\n- Heaptrack: A Heap Memory Profiler for Linux: KDE/heaptrack: \u003chttps://github.com/KDE/heaptrack\u003e\n- Memoro: A detailed Heap Profiler : \u003chttps://epfl-vlsc.github.io/memoro/\u003e\n- Memtrail: \u003chttps://github.com/jrfonseca/memtrail\u003e\n- MTuner: \u003chttps://milostosic.github.io/MTuner/\u003e\n- Profiler provided with google allocator: [Google Heap Profiler](https://code.google.com/p/gperftools/wiki/GooglePerformanceTools)\n- [Valgrind memcheck](http://valgrind.org/)\n- Valgrind massif: [Valgrind massif](http://valgrind.org/) with [Massif visualizer](https://projects.kde.org/projects/extragear/sdk/massif-visualizer)\n- [Dr. Memory](http://www.drmemory.org/)\n- Commercial tool, [Parasoft Insure++](https://www.parasoft.com/product/insure/)\n- Commercial tool, [Unicom PurifyPlus](http://unicomsi.com/products/purifyplus/) (previously IBM)\n- [Tau](https://www.cs.uoregon.edu/research/tau/home.php) is more a communication profiling tool for HPC apps, but it offers a [memory module](https://www.cs.uoregon.edu/research/tau/docs/old/bk05ch04.html)\n- Similar approach than MALT for the backend: [IgProf](http://igprof.org/)\n- A debug malloc library: [Dmalloc](http://dmalloc.com/)\n- Profiling and leak detection: [MemProf](http://people.redhat.com/otaylor/memprof/)\n- [Malloc count](http://panthema.net/2013/malloc_count/)\n- [mpatrol](http://mpatrol.sourceforge.net/)\n- Tracing tool for parallel programs: [EZTrace](http://eztrace.gforge.inria.fr/)\n- Find Obsolete Memory: [FOM Tools](https://gitlab.cern.ch/fom/FOM-tools/wikis/home)\n- Memray: A memory profiler support python. \u003chttps://bloomberg.github.io/memray/\u003e\n- Scalene: A perf and memory profiler for C \u0026 python : \u003chttps://pypi.org/project/scalene/\u003e\n\nIf ever I missed new ones, you can also look on the repos of this person keeping an up-to-date list:\n\u003chttps://github.com/MattPD/cpplinks/blob/master/performance.tools.md\u003e\n\nParallel allocators\n-------------------\n\nIf you search some parallel memory allocators, you can find those one on the net:\n\n- [Jemalloc (facebook, firefox)](http://www.canonware.com/jemalloc/)\n- [TCMalloc (google)](https://github.com/gperftools/gperftools)\n- [Hoard](http://www.hoard.org/)\n- [Lockless allocator](http://locklessinc.com/downloads/)\n- [MPC](https://github.com/cea-hpc/mpc-allocator) memory allocator from Multi-Processor Computing framework.\n- [mimalloc](https://github.com/microsoft/mimalloc)\n\nLicense\n-------\n\nMALT is distributed under CeCILL-C license (LGPL compatible).\n\nTo cite\n-------\n\nIf you publish about MALT, you cite this research paper as reference :\n\n```\nSébastien Valat, Andres S. Charif-Rubial, and William Jalby. 2017. MALT: a Malloc tracker.\nIn Proceedings of the 4th ACM SIGPLAN International Workshop on Software Engineering for\nParallel Systems (SEPS 2017). Association for Computing Machinery, New York, NY, USA,\n1–10. https://doi.org/10.1145/3141865.3141867\n```\n\nDiscussion\n----------\n\nIf you have questions of remarks, you can also send me a mail at **memtt@progranet.ovh**.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmemtt%2Fmalt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmemtt%2Fmalt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmemtt%2Fmalt/lists"}