2008-12-04 3 views
3

Только что наткнулся на this website. Функция 9 - это управление памятью, и они утверждают, что их продукт «автоматически освобождает память [[]], которая больше не нужна».Управление памятью SmartAssembly

Это маркетинговая уловка, или вы думаете, что у них есть какая-то обман рукавов? Являются ли они просто претензией на основании того, что они .Net runtime предоставляет в любом случае (или они gasp, вызывающие GC.Collect())?

Не интересуется продуктом, DotFuscator для меня достаточно - я всего лишь действительно заинтересован в том, как это можно достичь.

ответ

4

Интересно.

review from 2007 содержит следующее:

{smartassembly} использует несколько различных методы, чтобы сбить памяти использования.

Мы попросили разработчиков {smartassembly} для некоторых из специфики, и они сказали нам, что по умолчанию среда СЕК оставляет за тонну памяти для сборок .NET - будь или не просить они его. Так {smartassembly} разумно обнаруживает , когда процессор находится в режиме ожидания (или около того) и увеличивает или уменьшает количество резервируемой памяти для сборки в соответствии с его требованиями - «автоматизированном» GC в некотором смысле, за исключением того, что памяти может быть или, возможно, никогда не использовался .

В том же ключе, {} smartassembly (с преимуществом буквально имея доступ к коду благодаря источнику в пути .NET предназначен) отмечает все и все классы, которые не имеют какие-либо обнаруживаемых классы «ребенок» унаследовавшие из них, как «запечатаны», тем самым уменьшая объем памяти и процессора, используемого Среда CLR во время выполнения, чтобы определить, какие функции должны быть сделаны доступными для других классов и библиотек.

В этом же обзоре имеется пара скриншотов «до/после», показывающая приложение от 8M до 420K. Это говорит о том, что на самом деле это просто сокращает рабочий набор приложения, а не реальные требования к памяти. Такая же «оптимизация» появляется, если вы сворачиваете приложение. Это не занимает меньше памяти. Я не верю, что настольная платформа .NET может действительно работать только с 420K.

Функция автоматического уплотнения интересна - я не вижу, что она помогает, кроме поиска виртуальных методов. Я сомневаюсь, что влияние действительно значимо, но, конечно, я не сравнивал его.

Итак, ничего убедительного, но я сомневаюсь, что он делает все, что я особенно хочу.

+0

Спасибо Jon. Именно то, что я искал. – 2008-12-04 09:07:47

0

Возможно, я ошибаюсь, но мне кажется, что SmartAssembly толкает данные в файл.Если в диспетчере задач вы выбираете столбцы CommitSize и PF delta, вы увидите, что хотя WorkSet уменьшает размер, размер фиксации остается почти таким же. Если вы затем попытаетесь получить доступ к чему-то в своем приложении, вы увидите много ошибок страницы.

Если это поведение «Оптимизация памяти», то я думаю, что это имя не соответствует этой функции, и его просто следует назвать «Де-оптимизацией», поскольку стоимость доступа к файлу страницы может значительно снизить производительность.

Неужели я ошибаюсь в этой интерпретации?