On Wed, 8 May 2013 14:48:04 +0900 Carsten Haitzler (The Rasterman)
<ras...@rasterman.com> wrote:

> On Wed, 8 May 2013 13:46:08 +0900 Daniel Juyung Seo
> <seojuyu...@gmail.com> said:
> 
> > On Wed, May 8, 2013 at 12:11 PM, Carsten Haitzler
> > <ras...@rasterman.com> wrote:
> > > On Wed, 8 May 2013 11:20:27 +0900 Bluezery <ohpo...@gmail.com>
> > > said:
> > >
> > >> 2013/5/7 Carsten Haitzler <ras...@rasterman.com>
> > >>
> > >> > On Tue, 7 May 2013 17:32:05 +0900 Bluezery <ohpo...@gmail.com>
> > >> > said:
> > >> >
> > >> > > Hello,
> > >> > >
> > >> > > I have query abount elm_genlist_item_class_new/free/unref.
> > >> > >
> > >> > > Elm_Genlist_Item_Class is user created memory and referred
> > >> > > by genlist object.
> > >> > >
> > >> > > But sometimes application want to do not use it anymore.
> > >> > > So there is just one option to do this, it is to call
> > >> > > elm_genlist_item_class_free.
> > >> > > Evenghough, Item Class callbacks can be called because
> > >> > > genlist refer the Item Class yet. Moreover, if application
> > >> > > is module,  application can
> > >> > crash
> > >> > > after module is unloaded.
> > >> > >
> > >> > > There is two options:
> > >> > > 1.I can add new API to do this.elm_genlist_item_class_free2
> > >> > > or something. This is easy way but should be deprecaed later.
> > >> > >
> > >> > > 2. In elm_genlist_item_class_free(), all calbacks can be
> > >> > > NULL because the name is too intuitive for application. But
> > >> > > this will break ABI and also genlist example in elementary
> > >> > > should be changed.
> > >> > >
> > >> > > 3. All application fix their own to set all callbacks as
> > >> > > NULL before unloaded.
> > >> > > But this seems to be workaround for application.
> > >> > >
> > >> > > I like option 2. So I suggest how about above fix be added
> > >> > > at the time
> > >> > when
> > >> > > 1.8 is released. I think that this weired API usage should
> > >> > > be fixed ASAP. Or after 2.0?
> > >> >
> > >> > #3.
> > >> >
> > >> > free frees, but the class is refcounted.. so it stays around
> > >> > and alive as long
> > >> > as items need it. they all point to it.
> > >> >
> > >>
> > >> Okay, I see. If app. use class longer, app. should decide timing
> > >> to call item_free function.
> > >> Also for the case such as module, app. can set the callbacks as
> > >> NULL before unloaded.
> > >
> > > well in 99% of cases the app or lib doesnt need to null out the
> > > funcs. the code is and always will be in memory. ONLY *IF* you
> > > are going to dlclose() libs and remove code from memory do you
> > > need to do this...
> > 
> > Agreed. Also if we really should call dlclose(), we can postpone
> > dlclose() until genlist's EVAS_CALLBACK_FREE is called.
> > This will solve issue easily.
> > 
> > >
> > > just fyi... i highly advise not to dlclose(). it won't save
> > > memory as the code is paged in from disk as needed.. and if those
> > > pages are no longer accessed they will be freed from memory when
> > > the kernel needs those pages for something else. it just makes
> > > things LOOK better temporarily when u look at vsize/rss.
> > 
> > Well dlclose() is just a temporarily fake in this case :)
> > Btw, if we call dlopen() many times without dlclose(), what happens?
> > It will consume more memory any way.
> 
> libraries loaded are refcounted, so its the same mmaping for 2 or more
> dlopens, so it consumes no more memory. see "man dlopen".
> specifically:
> 
>        If the same library is loaded again with dlopen(), the same
> file handle is returned.  The dl library maintains  reference
> counts  for  library handles,  so  a  dynamic library is not
> deallocated until dlclose() has been called on it as many times as
> dlopen() has succeeded on  it.   The _init()  routine,  if  present,
> is only called once.  But a subsequent call with RTLD_NOW may force
> symbol resolution for  a  library  earlier loaded with RTLD_LAZY.

Which is kinda the point of shared libraries, only one copy in memory,
it's shared.  B-)

-- 
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.

Attachment: signature.asc
Description: PGP signature

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to