> -----Original Message----- > From: Robert Lougher [mailto:[EMAIL PROTECTED] > Sent: Saturday, July 29, 2006 5:28 AM > To: harmony-dev@incubator.apache.org > Subject: Re: Re: [drlvm] string interning in java > > On 7/29/06, Nathan Beyer <[EMAIL PROTECTED]> wrote: > > > > > > > -----Original Message----- > > > From: Robert Lougher [mailto:[EMAIL PROTECTED] > > > Sent: Friday, July 28, 2006 7:40 PM > > > To: harmony-dev@incubator.apache.org > > > Subject: Re: Re: [drlvm] string interning in java > > > > > > Hi, > > > > > > On 7/29/06, Alex Blewitt <[EMAIL PROTECTED]> wrote: > > > > On 28/07/06, Salikh Zakirov <[EMAIL PROTECTED]> wrote: > > > The interned String table should be garbage-collected. If the only > > > reference to an interned String is from the class constant pool it > > > will be collected when the class is unloaded. If the intern table is > > > preventing Strings from being collected it's a bug in the VM! > > > > Can the String from a class constant pool be collected if the class is > still > > in use? I'm assuming it can't, so the above is an incomplete response to > > Alex's points, as I imagine it's very possible to have many Strings in > > constant pools that are never or rarely used, but the class objects are > used > > quite frequently and would never get collected. For example, the Strings > > used in exceptions that rarely, if every get called in some classes. > > > > It wasn't meant to be a complete response. I was responding to the > following point:
I meant that your response to that point was incomplete and I still believe it is. > > > > > Furthermore, because it's a > > > > dynamically read in string, it doesn't pollute the intern() pool, > and > > > > thus when the class is unloaded, the string is unloaded too. Once a > > > > String is intern()'d, it's like a memory leak -- you'll never see > that > > > > memory again. > > Which implies that freeing of the dynamically loaded string when the > class is unloaded is something special. It is not. Nor is an > interned string a memory leak. It will be collected when there are no > more references to it like any other object. > > Rob. This assumes that Classes will frequently get unloaded, which I don't believe is the case, especially classes that are part of the core JRE libraries. Any String that's been placed into the constant pool of a Class couldn't be collected until that Class is collected, correct? And all of the Strings in the constant pool are taking up memory, correct? So, if you have a class and the only Strings in the constant pool are those that represent exception messages or keys to exception messages and those exceptions rarely get executed, but the Class is frequently used (keeping it from being collected), then you'd, theoretically, be wasting memory, correct? -Nathan --------------------------------------------------------------------- Terms of use : http://incubator.apache.org/harmony/mailing.html To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]