This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
On Wed, 21 May 2003, [iso-8859-1] Øyvind Harboe wrote: > In trying to track down a heap corruption problem (GDB has a warning > about heap corruption), I've stumbled across a weird failure. > > "Too many root sets" > > I think my test isn't eating memory, so why does the garbage > collector go gaga? That message comes from the GC, indicating that the root set table has overflowed. It has nothing to do with memory consumption. I suppose this is on Windows? My guess is VirtualQuery() is running wild, returning more results than the static-allocated root set table can handle (MAX_ROOT_SETS, usually 1024). Is it possible you have native code that allocates a large number of small noncontiguous memory regions from the OS? (As I understand the code in GC_add_roots_inner, it should merge adjacent or overlapping regions so they count as one region.) Workarounds available are increasing the compile-time MAX_ROOT_SETS constant, or disabling DYNAMIC_LOADING entirely if you can be certain that you are static-linking you gcj libraries and no java pointers can exist in a DLL data region. Jeff
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |