Build with jemalloc
NOKUBI Takatsugu
knok at daionet.gr.jp
Sun Sep 1 18:01:11 PDT 2013
Thanks for you reply.
On Sat, 31 Aug 2013 12:20:04 +0200
Michael Stahl <mstahl at redhat.com> wrote:
> although as far as i vaguely remember the really "bad" system memory
> allocators are in Windows XP and earlier; the Vista and newer allocators
> are said to be much better.
It is a interesting things. I tried to watch memory usage on XP and 7,
And the output is a little different.
> and i would suspect if LibreOffice requires more memory than MS Office
> it is most likely not because of the memory allocator but because of
> sub-optimal data structures in the application cores (plus some constant
> overhead because LibreOffice is portable and thus needs more platform
> abstraction layers).
>From my inspection, VCL calls quite many malloc/free pair (in the face,
new() call of some objects). UI compornent on LibreOffice supported
many platform, so it woud be unavoidable.
> i don't know why this does not work for the specific case of
> soffice.bin, because i don't know what symbols are in the extra
> libraries you link. perhaps there are different calling conventions in
> the jemalloc library and the soffice.bin objects or something like that,
> so it still picks up the allocator symbols from msvcrt.lib.
Thank you your comment. I tested building avery small program with jemalloc,
and it seems fine. So I check build related things again.
> this does not work on Windows because DLLs do not have a global symbol
> namespace, their namespace is local to each DLL. and every DLL knows
> not only the name of an imported symbol, but also which other DLL it is
> imported from. so i think what you would need to do to replace the
> memory allocator on Windows is to link _every_ DLL and executable
> against your custom allocator.
Actually, I also tried to modify another link commands, almost passed
the build but cli_maker was not.
> oh, and for quite a lot of classes in the code base a custom memory
> allocator is used anyway due to overloading operator new for the
> particular class, see include/tools/mempool.hxx and the underlying
> rtl_cache API in include/rtl/alloc.h. this implements a SLAB like
> allocator which is used for the most-used classes and should be quite
> efficient and reduce the fragmentation considerably.
Sounds good.
So I understand that LibreOffice supports jemalloc in many Unix-like
systems but Windows is not. And many classes are used internal memory
allocator on Unicos and Windows.
Is this right?
More information about the LibreOffice
mailing list