Hi Alon and Jukka, it turns out I just had to use an up-to-date memoryprofiler.js
thanks, Marco On Mon, Aug 1, 2016 at 11:17 AM, juj j <[email protected]> wrote: > 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 a topic in the > Google Groups "emscripten-discuss" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/emscripten-discuss/HtAzVposlX4/unsubscribe > . > To unsubscribe from this group and all its topics, send an email to > [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- *Marco Trivellato* <[email protected]> Unity Technologies -- 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.
