Управление памятью SmartAssembly - PullRequest
3 голосов
/ 04 декабря 2008

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

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

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

Ответы [ 2 ]

4 голосов
/ 04 декабря 2008

Интересно.

A обзор 2007 содержит это:

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

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

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

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

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

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

0 голосов
/ 22 октября 2012

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

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

Я не прав с этой интерпретацией?

...