commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jörg Schaible <>
Subject RE: [VOTE] Release BeanUtils 1.8.0 Beta (RC1)
Date Fri, 03 Aug 2007 06:21:00 GMT
Hi Niall,

Niall Pemberton wrote on Friday, August 03, 2007 3:52 AM:


>>> Since the test implies some nasty error condition (I did not have a
>>> look at the code yet), it might simply reveal some error of the JDK
>>> (especially since IBM JDK 1.4.2 works) ...
>> BeanUtils has "per ClassLoader" caches
> (ContextClassLoaderLocal) which
>> uses a WeakHashMap to store references to each ClassLoader's cache.
>> The Beanification tests failing are basically trying to force garbage
>> collection by allocating ever increasing amounts (to the power of 2)
>> of spurious memory and calling System.gc() - to verify that these
>> references are released. 

Hehehe. Just by looking at the name of the test, I had something like this in my mind.
>> Personally I think the test is flawed - iterating around allocating
>> an array, doubling in size each time - since by the 20th iteration
>> its allocating 1MB and by the 30th iteration 1GB. Clearly in this
>> case it blew the memory first - but I don't think that really proves
>> anything since theres  no way of knowing whether the JVM either:
>>  - couldn't garbage collect the reference for some reason (aim of
>> the test) 
>>  - didn't try to garbage collect before running out of memory

Yep. Some alternate strategies for this would be good.

>> Since it is woking on other JDKs then (i.e. seems to be forcing
>> garbage collection of those weak references) then I think its not a
>> big issue. We should probably look at improving the test - but I'm
>> not sure how - on the Sun JDK 1.5 its only allocating a few bytes (1
>> or 2 iterations) before the garnage collector runs.
> btw this behaviour (and test) is pretty much unchanged since the
> 1.7.0 release. 

I bet, noone tried to run the tests on all those JDK's ... ;-)

However, I also don't think this problem is something that should prevent the release.

So +1 from me.

- Jörg

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message