<div dir="auto">Also if we are speaking Linux, the OS in general have very aggressive caching policy.<div dir="auto">Everything is remains in cache until it it fills up or it cleaned up externally.</div><div dir="auto">AFAIK there's no negative effects on performance.</div><div dir="auto">That is not touching the programming that I know little about. </div><div dir="auto"><br></div><div dir="auto">BR Evgeniy. </div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, 21 Dec 2018, 18:18 Shachar Shemesh <<a href="mailto:shachar@shemesh.biz">shachar@shemesh.biz</a> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
    
  
  <div style="direction:ltr" text="#000000" bgcolor="#FFFFFF">
    <div class="m_-256154915493091207moz-cite-prefix">On 21/12/2018 16:20, Lev Olshvang
      wrote:<br>
    </div>
    <blockquote type="cite">
      <pre class="m_-256154915493091207moz-quote-pre">
Hi All,

I have  an executable (C++) which is the exclusive user of the some shared library that it uses only during  the initialization phase.

I would like to free memory used by this shared library, because I am running on embedded system.

How can I achieve this?

I know that dlopen() will load shared library, and hope that following dlclose() will free this lib memory. 

1. Still  I do not know what method should be used to make dynamic linker look again into executable and resolve symbols of the newly appeared symbols ?
2. And  how to tell the dynamic linker ld-linux.so to postpone the symbol resolution until dlopen()  will load  the library?
3. Whether to compile and link executable with this library or leave unresolved symbols?</pre>
    </blockquote>
    <p>What you are asking for, as asked, is not possible. If you
      explain your use case better, we might better understand what
      you're trying to do.</p>
    <p><br>
    </p>
    <p>With that said, I think you should just link the library.</p>
    <p><br>
    </p>
    <p>All the text segments of the library (i.e. - code) will be loaded
      with a read only shared mapping. This means that if they are not
      used, they will be unmapped the first time memory becomes
      constrained. If you do not use them later on, they will simply not
      be loaded to memory. They will still be mapped, but will not load
      your embedded system's memory in any significant way.</p>
    <p><br>
    </p>
    <p>Shachar<br>
    </p>
    <br>
  </div>


_______________________________________________<br>
Linux-il mailing list<br>
<a href="mailto:Linux-il@cs.huji.ac.il" target="_blank" rel="noreferrer">Linux-il@cs.huji.ac.il</a><br>
<a href="http://mailman.cs.huji.ac.il/mailman/listinfo/linux-il" rel="noreferrer noreferrer" target="_blank">http://mailman.cs.huji.ac.il/mailman/listinfo/linux-il</a><br>
</blockquote></div>