Large structures with reference (class) fields located at beyond certain offsets (> 120 bytes on 32-bit), can cause the GC to "conservatively" scan the object. This means that non-reference fields (e.g. int, double, etc) are scanned as potential references to managed objects. On 32-bit platforms with a limited address space, this can lead to "false positives" that keep unreferenced objects alive.
As such, I would recommend:
1. Avoid large structures that contain reference (managed object) type fields.
2. When this is required, move the reference (managed object) fields to the beginning of the structure to avoid triggering the conservative scanning mode.