The stack trace indicates that the application is doing gathering writes with an array containing heap buffers. Prior to jdk7, the scatter/gather operations weren't integrated with the buffer caching and so there is a direct buffer allocated to shadow each non-direct buffer in the array. This problem has been resolved in jdk7 as part of the socket-channel completion work (see 6781363 and 6465310). Note that this behavior is independent of the collector (not specific to G1). Nelson is going to contact the submitter and ask them to test with jdk7 b50 or newer.