У меня есть приложение .NET 3.5
Когда я профиля приложения, я могу подтвердить, что эти строки хранятся в LOH, но и они также восстанавливаются GC позже, так что в данный момент времени Их в Лохе (работает 10 поток).
Мое понимание в том, что эти большие строки расположены в Лохе, затем утеряют GC, но и все же как-то из-за их расположенных нахождений ( и находиться в LOH, поэтому не уплотняется ) Это вызывает фрагментацию. Это происходит, несмотря на то, что в операции нет утечки памяти.
Это не вызывает проблем в ~ 100 тысяч раз, однако, когда она достигает 1 м +, он выдает из исключений памяти.
Я использую Profiler Memory Memory, и это результат, который я получил в ранних казнях:
.NET Using 70MB of 210MB total private bytes allocated in to the application
Number of Fragments: 59
Number of Large Fragments : 48 (99.6% of free memory)
Largest Fragment: 9MB
Free Space: 52% of total memory (37MB)
Unmanaged Memory: 66% of total private memory (160MB)