Сообщение Re[3]: dotMemory недосягаемые объекты от 08.12.2019 11:19
Изменено 08.12.2019 11:35 WW898
Re[3]: dotMemory недосягаемые объекты
Здравствуйте, _NN_, Вы писали:
_NN>Здравствуйте, WW898, Вы писали:
WW>>Здравствуйте, _NN_, Вы писали:
_NN>>>Оказалось что dotMemory в отличии от .NET Memory Profiler не умеет показывать недосягаемые объекты из дампа.
_NN>>>Это планируется реализовать в будущем ?
WW>>А вы с какой целью недосягаемые объекты хотите? Какую проблему оно поможет решить?
_NN>Есть дамп на 2Гб, с помощью .NET Memory Profiler легко нашли какие объекты не убрались и решили проблему.
_NN>С dotMemory этого не видно.
Давайте для начала с терминологией определимся: недосягаемый/недостежимый объект — это объект в графе в который нет пути из какого-либо рута.
Другими словами это и есть тот самый мусор который и должен находить и репортить алгоритм сбора мусора. Но есть одно но, алгорим работает от обратного: находит все выжившие объекты, а остальные регионы (не объекты!!!) памяти в хипе считаются мусором. В этих регионах нет информации о начале объектов, их количестве, просто диапазоны памяти, где ничего теперь нет.
Дальше можно сделать 3 вещи с этими регионами:
Собственно размеры хиров, где содержатся managed обекты при этом не менются.
Теперь по вашему вопросу. Не могли бы Вы, коротенько, в паре абзацах, объяснить что именно Вы имели в виду?
_NN>Здравствуйте, WW898, Вы писали:
WW>>Здравствуйте, _NN_, Вы писали:
_NN>>>Оказалось что dotMemory в отличии от .NET Memory Profiler не умеет показывать недосягаемые объекты из дампа.
_NN>>>Это планируется реализовать в будущем ?
WW>>А вы с какой целью недосягаемые объекты хотите? Какую проблему оно поможет решить?
_NN>Есть дамп на 2Гб, с помощью .NET Memory Profiler легко нашли какие объекты не убрались и решили проблему.
_NN>С dotMemory этого не видно.
Давайте для начала с терминологией определимся: недосягаемый/недостежимый объект — это объект в графе в который нет пути из какого-либо рута.
Другими словами это и есть тот самый мусор который и должен находить и репортить алгоритм сбора мусора. Но есть одно но, алгорим работает от обратного: находит все выжившие объекты, а остальные регионы (не объекты!!!) памяти в хипе считаются мусором. В этих регионах нет информации о начале объектов, их количестве, просто диапазоны памяти, где ничего теперь нет.
Дальше можно сделать 3 вещи с этими регионами:
- Забить до следующего GC (быстро и эффективно).
Скомпактить (дорого и сердито). Тут тоже есть 2 варианта: сжимать и копировать
Использовать маленькие регионы для точечного выделения в них новых объектов (магия оптимизации)
Собственно размеры хиров, где содержатся managed обекты при этом не менются.
Теперь по вашему вопросу. Не могли бы Вы, коротенько, в паре абзацах, объяснить что именно Вы имели в виду?
Re[3]: dotMemory недосягаемые объекты
Здравствуйте, _NN_, Вы писали:
_NN>Здравствуйте, WW898, Вы писали:
WW>>Здравствуйте, _NN_, Вы писали:
_NN>>>Оказалось что dotMemory в отличии от .NET Memory Profiler не умеет показывать недосягаемые объекты из дампа.
_NN>>>Это планируется реализовать в будущем ?
WW>>А вы с какой целью недосягаемые объекты хотите? Какую проблему оно поможет решить?
_NN>Есть дамп на 2Гб, с помощью .NET Memory Profiler легко нашли какие объекты не убрались и решили проблему.
_NN>С dotMemory этого не видно.
Давайте для начала с терминологией определимся: недосягаемый/недостижимый объект — это объект в графе в который нет пути из какого-либо рута.
Другими словами это и есть тот самый мусор который и должен находить и репортить алгоритм сбора мусора. Но есть одно но, алгорим работает от обратного: находит все выжившие объекты, а остальные регионы (не объекты!!!) памяти в хипе считаются мусором. В этих регионах нет информации о начале объектов, их количестве, просто диапазоны памяти, где ничего теперь нет.
Дальше можно сделать 3 вещи с этими регионами:
Собственно размеры хиров, где содержатся managed обекты при этом не менются.
Теперь по вашему вопросу. Не могли бы Вы, коротенько, в паре абзацах, объяснить что именно Вы имели в виду?
_NN>Здравствуйте, WW898, Вы писали:
WW>>Здравствуйте, _NN_, Вы писали:
_NN>>>Оказалось что dotMemory в отличии от .NET Memory Profiler не умеет показывать недосягаемые объекты из дампа.
_NN>>>Это планируется реализовать в будущем ?
WW>>А вы с какой целью недосягаемые объекты хотите? Какую проблему оно поможет решить?
_NN>Есть дамп на 2Гб, с помощью .NET Memory Profiler легко нашли какие объекты не убрались и решили проблему.
_NN>С dotMemory этого не видно.
Давайте для начала с терминологией определимся: недосягаемый/недостижимый объект — это объект в графе в который нет пути из какого-либо рута.
Другими словами это и есть тот самый мусор который и должен находить и репортить алгоритм сбора мусора. Но есть одно но, алгорим работает от обратного: находит все выжившие объекты, а остальные регионы (не объекты!!!) памяти в хипе считаются мусором. В этих регионах нет информации о начале объектов, их количестве, просто диапазоны памяти, где ничего теперь нет.
Дальше можно сделать 3 вещи с этими регионами:
- Забить до следующего GC (быстро и эффективно).
Скомпактить (дорого и сердито). Тут тоже есть 2 варианта: сжимать и копировать
Использовать маленькие регионы для точечного выделения в них новых объектов (магия оптимизации)
Собственно размеры хиров, где содержатся managed обекты при этом не менются.
Теперь по вашему вопросу. Не могли бы Вы, коротенько, в паре абзацах, объяснить что именно Вы имели в виду?