Memoro is a highly detailed heap profiler. Memoro not only shows you where and when your program makes heap allocations, but will show you _ how _ your program actually used that memory. Memoro collects detailed information on accesses to the heap, including reads and writes to memory and when they happen, to give you an idea of how efficiently your program uses heap memory.
Memoro includes a visualizer application that distills all this information into scores and indicators to help you pinpoint problem areas.
Memoro system to provide developers with data, analyses, and visualizations that allow quick identification and diagnosis of inefficient heap usage and poor allocation strategies. Memoro enables detailed heap profiling by recording heap allocations, deallocations, as well as how a program uses its allocations.
While Memoro collects a large amount of data, careful static instrumentation keeps runtime overheads at an acceptable level, similar to existing, less informative heap profiling solutions. The Memoro implementation is based on the LLVM/Clang AddressSanitizer framework and is thus portable to any system that the sanitizer framework supports. In addition, since the instrumentation and runtime are in the compiler back-end, other language front-ends should be able to leverage Memoro as well.
Overall, Memoro goes beyond existing solutions by providing detailed profiling and heap usage efficiency analysis in a low-overhead package. Most heap profilers for native languages use allocation routine interception to build a timebased log of heap allocations and deallocations. While this approach can track heap usage through time, it is typically the only data collected and displayed to a developer. She thus lacks insight into how her program actually uses the bytes that it allocated. Gleaning this information from source code, by trying to guess what objects were accessed where and when, can be time consuming and error-prone, and it is often impractical on large projects in which developers may be unfamiliar with a majority of the code.
In addition to all of these concerns, existing profilers lack a means of mapping heap allocations to object types. Since objects of the same type can be allocated at different places in a program, without this information, there is no easy way to view their heap usage holistically.
The Memoro visualizer presents collected information and analysis in a clear, concise manner and automatically flags instances of lowefficiency heap usage for a developer to investigate. The result is quick and accurate diagnoses of problems, which, in three evaluations, lead to significant performance improvements. Memoro is open source and available