Jon*_*son 4 .net obfuscation memory-management
刚刚看到这个网站。功能 9 是内存管理,他们声称他们的产品“自动释放不再需要的内存”。
这是一种营销策略,还是你认为他们有什么伎俩?他们只是根据 .Net 运行时在任何情况下提供的内容做出声明(还是他们喘不过气来?调用 GC.Collect())?
对产品并不是很感兴趣,DotFuscator 对我来说就足够了 - 我只是对如何实现这一点非常感兴趣。
有趣的。
2007 年的评论包含以下内容:
{smartassemble} 使用多种不同的技术来降低内存使用量。
我们向 {smartassemble} 的开发人员询问了一些细节,他们告诉我们默认情况下 CLR 会为 .NET 程序集保留大量内存 - 无论他们是否请求。因此,{smartassemble} 会智能地检测 CPU 何时空闲(或大约空闲),并根据其要求增加或减少程序集的保留内存量 - 从某种意义上说是“自动”GC,只不过内存可能曾经或可能从未空闲过。正在使用。
同样,{smartassemble}(由于 .NET 的设计方式,其优点是可以真正访问源代码)将所有没有任何可检测到的“子”类继承的类标记为“密封”,从而减少 CLR 在运行时确定哪些函数应可供其他类和库使用的内存和 CPU 量。
同一篇评论有一对“之前/之后”屏幕截图,显示应用程序从 8M 变为 420K。这对我来说意味着它实际上只是减少了应用程序的工作集,而不是真正的内存需求。如果您最小化应用程序,也会出现相同的“优化”。它不会突然占用更少的内存。我不相信桌面.NET框架真的可以用420K运行。
自动密封功能很有趣 - 除了查找虚拟方法之外,我看不出它有什么帮助。我怀疑影响是否真的显着,但当然我还没有对其进行基准测试。
所以,没有什么结论,但我怀疑它是否做了我特别想要的事情。