Пункт AddMemoryPressure состоит в том, чтобы сообщить сборщику мусора, что выделен большой объем памяти, выделенный этому объекту. Если он неуправляемый, сборщик мусора не знает об этом; только управляемая часть. Поскольку управляемая часть относительно невелика, GC может позволить ей проходить сборку мусора несколько раз, по существу тратя память, которую, возможно, нужно будет освободить.
Да, вам все равно придется вручную выделять и освобождать неуправляемую память. Вы не можете уйти от этого. Вы просто используете AddMemoryPressure, чтобы убедиться, что GC знает, что он есть.
Edit:
Ну, в случае, если один, я мог бы это сделать, но не сделал бы большой разницы, поскольку GC не сможет сделать ничего о своем типе , если я это правильно понимаю: 1) Я объявляю свою переменную, 8 управляемых байтов, 2-мя неуправляемых байтов. Затем я буду использовать его, вызывать dispose, поэтому неуправляемая память освобождается. Сейчас это будет только ocuppy 8 байтов. Теперь, на мой взгляд, вызвав в начале AddMemoryPressure и RemoveMemoryPressure в конце, не было бы ничего другого. Что я ошибаюсь? Извините за то, что я так беспокоюсь об этом. - Jorge Branco
Я думаю, что вижу вашу проблему.
Да, если вы можете гарантировать, что вы всегда звоните Dispose
, то да, вам не нужно беспокоиться об AddMemoryPressure и RemoveMemoryPressure. Эквивалентности нет, так как ссылка все еще существует, и тип никогда не будет собран.
Тем не менее, вы по-прежнему хотите использовать AddMemoryPressure и RemoveMemoryPressure для полноты. Что, если, например, пользователь вашего класса забыл вызвать Dispose?В этом случае, предположив, что вы правильно реализовали шаблон Disposal, вы завершите восстановление неуправляемых байтов при завершении, т. Е. При сборке управляемого объекта. В этом случае вы хотите, чтобы давление памяти все еще было активным, так что объект, скорее всего, будет восстановлен.
Ну, это не ответило на вопрос, lol. –
Я сказал почти точно, что сказал Стивен Лионс, только по-другому. Как это не ответило на вопрос? – Randolpho
Ну, на самом деле я перечитал его и отредактировал свой пост. –