Re[50]: Java vs C# vs C++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 05.10.15 07:36
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Здравствуйте, Serginio1, Вы писали:


EP>>>Да, но их в какой-то мере можно заменить чем-то типа SortedSet. Но тут-то получается была реальная необходимость, поэтому я и удивляюсь почему нет популярной реализации, пусть даже и сторонней.

S>>Не совсем http://rsdn.ru/article/alg/tlsd.xml
Автор(ы): Сергей Смирнов (Serginio1)
Дата: 14.08.2004
Пример реализации двухуровневого массива с помощью нового средства С# — generics. Сравнение производительности различных реализаций сортированных списков.

S>>Внизу результаты

EP>Преимущества B+ я понимаю. Но тут же речь не о лучше/хуже, а о том что можно нарваться на Out of Memory на ровном месте.

На самом деле вариантов работы с такими объемами очень редки.
Читаем здесь
http://habrahabr.ru/post/149584/

Что же насчет Large Object Heap? Она никогда не дефрагментируется (почти никогда). Это потребовало бы большое количество времени, что может сказаться плохо на работе приложения. Однако это не значит, что CLR начинает потреблять все больше и больше памяти просто так. Во время Full-GC (Gen0, Gen1, Gen2) система все же возвращает ОС память, освобождаясь от уже мертвых объектами из LOH (или дефрагментацией SOH).


Также CLR располагает новые объекты в LOH не только один за другим, как в SOH, например, но и на местах уже свободной памяти, не дожидаясь Full-GC.
Запуск GC не детерминирован, за исключением вызова метода GC.Collect().

Однако все же существуют приблизительные критерии, по которым можно это предсказать (следует помнить, что нижеперечисленные условия приблизительны и CLR сама приспосабливается к поведению приложения, многое еще зависит и от вида сборщика мусора):
•При достижении поколения Gen0 размера в 256 KB
•При достижении поколения Gen1 размера в 2 MB
•При достижении поколения Gen2 размера в 10 MB

Также сборка мусора запускается при нехватке системой памяти. CLR для этого использует Win32-функции CreateMemoryResourceNotification и QueryMemoryResourceNotification.

и солнце б утром не вставало, когда бы не было меня
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.