Неожиданное поведение G C? - PullRequest
       14

Неожиданное поведение G C?

1 голос
/ 04 февраля 2020

Я пишу программу, которая работает с кучей (5000+) XML файлов, десериализует их и записывает новые XML файлы (по 1 для каждого) из их данных посредством асинхронных c обращений к XmlWriter экземпляр.

Я заметил, что моя программа собирала мусор дважды (или более) в секунду.

В течение 10 секунд:
enter image description here

В течение 4 секунд:
enter image description here

Поэтому я хотел посмотреть, что у меня в памяти, и использовать gcdump , который при вызове выполняет Сборка мусора 2-го поколения.

После вышеупомянутого вызова G C я больше не получаю никаких автоматических c сборщиков мусора до конца программы, как я надеялся, что это будет первоначально.

Вы можете видеть, как коллекции исчезают посередине, вот когда я позвонил gcdump:
enter image description here

Это нормальное поведение для G C?

Я предполагаю, что в начале программы я создаю объект в куче, которая занимает большую часть выделенное пространство, поэтому G C нужно вызывать очень часто; но почему этот объект не удаляется автоматически? Почему я должен вручную вызвать G C (через gcdump) для его утилизации?

Спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...