Массивы этих примитивов рассматриваются как огромные объекты, если размер массива превышает половину области G1 (так же, как и для других объектов). Однако, когда дело доходит до восстановления этих массивов, G1 обрабатывает их по-разному, в том смысле, что он пытается восстановить их во время любого типа паузы сбора. Чтобы сделать это безопасно, сборщик должен проверить любые ссылки на массив, чтобы гарантировать, что к нему больше нельзя получить доступ. Вот почему в документации говорится: «G1 оппортунистически пытается вернуть огромные объекты, если на них не ссылаются многие объекты ...» Это может показаться немного запутанным, потому что вы ожидаете вернуть что-то, только если на него нет ссылок.
Эта ошибка объясняет, как это сформулировано
https://bugs.openjdk.java.net/browse/JDK-8048179
Кроме того, этот пост содержит более подробную информацию.
https://blogs.oracle.com/poonam/eager-reclamation-of-humongous-objects-with-g1