This tool should definitely still work, only the --memoryprofiler linker
flag should be needed, after which the profiler tool should appear on the
page automatically at page startup. Are you seeing some issues?

One issue I've seen is that sometimes customized page style CSS layouts
have caused the content of the memoryprofiler div appear outside the
visible screen, and e.g. with overflow:hidden; style on the page, user
wouldn't be able to scroll to it. If the layout of the memory profiler
looks odd, try clearing CSS styles on the output page.

2016-07-28 23:10 GMT+03:00 Alon Zakai <[email protected]>:

> Jukka would know for sure, but it should, there is a test in the suite,
> runnable with
>
> ./tests/runner.py interactive.test_cpuprofiler_memoryprofiler
>
> that seems to pass. (Although, maybe some details have changed since these
> posts, so maybe looking in the test code can help.)
>
> On Thu, Jul 28, 2016 at 5:44 AM, Marco Trivellato <[email protected]>
> wrote:
>
>> Any idea if this profiler still works with recent versions of Emscripten ?
>>
>> On Tuesday, November 12, 2013 at 4:28:35 PM UTC, jj wrote:
>>>
>>> Some updates to the memory profiler: (download from
>>> https://dl.dropboxusercontent.com/u/40949268/emcc/memoryprofiler/memoryprofiler.js
>>> )
>>>
>>>  - The profiler will now also print the amount of memory consumed by
>>> audio clips you have loaded to the OpenAL audio backend, which are stored
>>> outside the Emscripten HEAP.
>>>  - Added a color legend, thanks Floh for the suggestion :)
>>>  - Added a mechanism for tracking currently allocated pointers by
>>> callstack. You can use this to detect running memory leaks or taking a
>>> delta of allocations between two times as follows:
>>>      - tick the checkbox "Print allocation statistics by callstack to
>>> html log" at time A.
>>>      - run the page for a while.
>>>      - untick the same checkbox at time B.
>>>      - the log at the end of the page will show all pointers that were
>>> allocated between times A to B and are still alive, grouped by callstack.
>>>
>>> See a running demo at
>>> https://dl.dropboxusercontent.com/u/40949268/emcc/memoryprofiler/Geometry_d.html
>>> , although that might not be the best example, since it does very few
>>> allocations and does not leak.
>>>
>>> Known limitations:
>>>   - If you used a custom <script> tag to preload the VFS, the profiler
>>> will show the space taken up by the VFS in green, not orange, i.e. the
>>> profiler will not understand that it was allocated by the VFS.
>>>   - Detailed memory tracking is not available if compiled under asm.js.
>>> This is because it is not possible to inject custom replacements to
>>> malloc() and free() after they were compiled to asm.js.
>>>   - If you compiled with the --no-heap-copy linker flag, the VFS will
>>> not be seen by the profiler at all. Use e.g. Firefox about:memory tab to
>>> see the whole browser memory consumption.
>>>   - Call stack demangling with the allocated pointer logging gets the
>>> symbols confused at times, only partially demanling some of the names.
>>>
>>> Hope you find some use for it,
>>>    Jukka
>>>
>>>
>>> 2013/10/7 wolfviking0 <[email protected]>
>>>
>>> Hi JJ,
>>>>
>>>> Your last version is working well for me on WebKit.
>>>>
>>>> Thanks.
>>>>
>>>> PS: May be just one suggestion, add the color for the legend will be
>>>> nice (not just text description).
>>>>
>>>>
>>>>
>>>> <https://lh5.googleusercontent.com/-5743sFCtIgo/UlJcj_xnmPI/AAAAAAAA-wM/OguKr7235FA/s1600/Capture+d%E2%80%99e%CC%81cran+2013-10-07+a%CC%80+08.57.49.png>
>>>>
>>>>
>>>>
>>>> Le jeudi 26 septembre 2013 23:28:22 UTC+2, jj a écrit :
>>>>
>>>>> Hi,
>>>>>
>>>>> I got caught by the season flu, and I thought I'd do something fun for
>>>>> a change, so here goes.
>>>>>
>>>>> Memoryprofiler.js is a tool that integrates to Emscripten-built .html
>>>>> applications, and it tracks the various Emscripten memory area uses, and
>>>>> draws a graph of memory fragmentation in the Emscripten HEAP.
>>>>>
>>>>> It hooks into the malloc(), free() and Runtime.stackAlloc() functions
>>>>> of the Emscripten runtime, and captures the memory usage as it happens.
>>>>>
>>>>> See a live demo here https://dl.dropboxusercontent.com/u/
>>>>> 40949268/emcc/memoryprofiler/Geometry_d.html
>>>>>
>>>>> A quick glossary of the related terms if you are not yet familiar with
>>>>> them:
>>>>>
>>>>> HEAP: This is the single large memory blob that the Emscripten
>>>>> application allocates at startup, and is all the memory that the 
>>>>> Emscripten
>>>>> application ever sees. The STATIC, STACK and DYNAMIC memory areas are
>>>>> allocated inside this chunk.
>>>>>
>>>>> STATIC: This memory area contains constants and globals allocated at
>>>>> application startup time. Its size never changes at runtime. The STATIC
>>>>> memory area is in the lowest part of the Emscripten HEAP.
>>>>>
>>>>> STACK: This is the application function call stack. Note that unlike
>>>>> the X86 stack that grows downwards, the Emscripten stack grows up. The
>>>>> profiler tracks how much space is used in the stack during the time stack
>>>>> and heap allocations occur, but note that it is only approximate - not all
>>>>> stack usage can be captured.
>>>>>
>>>>> DYNAMIC: The memory area for dynamic heap allocations. This is the
>>>>> pool where memory is taken from when operator new or malloc is called.
>>>>>
>>>>> As is readily visible in the map that gets graphed, the memory layout
>>>>> inside HEAP looks like
>>>>>
>>>>> (address 0) [ STATIC | STACK | DYNAMIC | empty ] (top of HEAP)
>>>>>
>>>>> The empty space between the top of the DYNAMIC area and the end of
>>>>> HEAP is unused, but fully reserved for the DYNAMIC area to grow into (via 
>>>>> a
>>>>> page allocation operation from a function _sbrk). The total amount of
>>>>> memory the application can allocate is the sum of the empty area
>>>>> plus the amount of free memory in DYNAMIC (minus fragmentation of the
>>>>> HEAP in DYNAMIC).
>>>>>
>>>>> To embed memoryprofiler.js to your own builds:
>>>>>
>>>>> 1. Download https://dl.dropboxusercontent.com/u/
>>>>> 40949268/emcc/memoryprofiler/memoryprofiler.js and place it next to
>>>>> your built Emscripten .html file.
>>>>> 2. Add a line "<script src='memoryprofiler.js'></script>" to your
>>>>> application .html file to link memoryprofiler.js to it.
>>>>> 3. In the Module properties of your application .html file, add a
>>>>> preRun call to memoryprofiler initialization function
>>>>> 'memoryprofiler_add_hooks()'. That is, replace the default line in Module
>>>>> that reads
>>>>>
>>>>> preRun: []
>>>>>
>>>>> with
>>>>>
>>>>> preRun: [memoryprofiler_add_hooks]
>>>>>
>>>>> and reopen the page. That's it!
>>>>>
>>>>> To make steps 2. and 3. persist between builds, you can add the
>>>>> <script> tag and the preRun dependency to your custom shell file (copy the
>>>>> provided shell.html in emscripten source directory to your project and 
>>>>> make
>>>>> the changes there), and use --shell-file my_shell_with_profiler.html at
>>>>> Emscripten link time to use that shell instead.
>>>>>
>>>>> Configuration:
>>>>>
>>>>> There are a few items you can configure in the profiler. Configuration
>>>>> occurs by directly editing the file memoryprofiler.js. See the variables
>>>>>
>>>>> MEMORYPROFILER_DETAILED_HEAP_USAGE MEMORYPROFILER_TRACK_CALLSTACK_MIN_SIZE
>>>>> MEMORYPROFILER_HOOK_STACKALLOC
>>>>> MEMORYPROFILER_UI_UPDATE_INTERVAL
>>>>>
>>>>> and their documentation in top of the file itself.
>>>>>
>>>>> Hope it works!
>>>>>    Jukka
>>>>>
>>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "emscripten-discuss" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>
>>>
>>> --
>> You received this message because you are subscribed to the Google Groups
>> "emscripten-discuss" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to