Submitted On 09-JUL-2008
Jess_Holle
This bug impacts setCollectionThreshold() as well and has a severe impact on this functionality.
The bug is clear and is in jmm_SetPoolThreshold() in management.cpp. Therein threshold is compared to max_intx.
It is quite clear that max_intx is a *signed* quantity whereas this needs to be an unsigned quantity (ala max_uintx). I didn't follow through all the typedefs to see if this is really correct under 64-bit operation, as suggested by a comment above this code which states that intx and uintx are 64-bits wide in that case.
This *desparately* needs to be fixed as it does not allow setting of these thresholds to anything greater than 2GB in a 32-bit JVM, thus greatly limiting the utility of this functionality.
Submitted On 09-JUL-2008
Jess_Holle
Note that this bug is still quite present in Java 6 Update 6.
Submitted On 10-JUL-2008
Jess_Holle
I really need a fix for this both in Java 5 and Java 6.
Having MemoryPool.set*Threshold() functionality fail for thresholds above 2GB in a 32-bit JVM severely marginalizes this entire functionality for any 32-bit server JVM usage -- as in this case one is very, very likely pushing the heap over 2GB if one has any concerns about memory thresholds.
PLEASE NOTE: JDK6 is formerly known as Project Mustang
|