Існує багато, що потрібно витратити час на тестування різних налаштувань збору сміття, але, як було сказано вище, зазвичай це не корисно.
Зараз я працюю над проектом, що включає обмежене пам’ять середовище та відносно велику кількість даних - є кілька великих фрагментів даних, які підштовхують моє середовище до межі, і, хоча мені вдалося знизити використання пам'яті що теоретично це повинно працювати просто добре, я все одно отримаю помилки у купі --- багатослівні параметри GC показали мені, що він намагається збирати сміття, але безрезультатно. У налагоджувальній машині я міг би виконати System.gc () і, безумовно, було б достатньо пам'яті ... не багато зайвої, але достатньо.
Отже, єдиний раз, коли моя програма викликає System.gc (), це коли вона збирається ввести сегмент коду, де будуть виділятися великі буфери, необхідні для обробки даних, і тест на вільну пам'ять, що наявна, вказує на те, що я не гарантовано мати його. Зокрема, я дивлюсь на 1 Гбіт середовище, де щонайменше 300 Мб зайнято статичними даними, при цьому основна частина нестатичних даних пов'язана з виконанням, за винятком випадків, коли оброблювані дані мають становити принаймні 100-200 Мб джерело. Це все є частиною автоматичного перетворення даних, тому ці дані існують протягом відносно короткого періоду часу.
На жаль, хоча інформація про різні варіанти налаштування сміттєзбірника є доступною, це здається в значній мірі експериментальним процесом, і специфіку нижчого рівня, необхідну для розуміння того, як вирішити ці конкретні ситуації, не легко отримати.
Незважаючи на це, незважаючи на те, що я використовую System.gc (), я все ще продовжував налаштовуватися, використовуючи параметри командного рядка і встиг покращити загальний час обробки моєї програми порівняно значним чином, незважаючи на те, що не зміг подолати камінь спотикання, що виникає при роботі з більшими блоками даних. Якщо говорити, System.gc () - це інструмент .... дуже ненадійний інструмент, і якщо ви не будете обережні з тим, як ним користуєтесь, ви хочете, щоб він працював не частіше.