我刚碰到本网站。特性9是内存管理,他们声称他们的产品“自动释放不再需要的内存”。
这是一个营销策略,还是你认为他们的袖子上有什么诡计?在任何情况下,他们是否只是根据.Net运行时提供的内容进行声明(或者他们是在喘息地调用GC.Collect())呢?
不太感兴趣的产品,DotFuscator对我来说就够了--我只是对如何实现这一目标感兴趣。
发布于 2008-12-04 08:28:35
有意思的。
2007年的审查包含以下内容:
{smartassembly}使用几种不同的技术来降低内存的使用率。 我们向{smartassembly}的开发人员询问了一些细节,他们告诉我们,默认情况下,CLR为.NET程序集保留了大量内存--不管他们是否请求它。因此,{智能程序集}智能地检测CPU何时空闲(或在此期间),并根据程序集的要求增加或减少程序集的保留内存量--某种意义上说是“自动的”GC,但内存可能使用过也可能没有使用过。 同样,{smartassembly} (由于.NET的设计方式可以真正访问源代码)将任何和所有没有可检测的“子”类继承的类标记为“密封”,从而减少了CLR在运行时使用的内存量和CPU数量,以确定哪些函数应该提供给其他类和库。
同样的评论有一个“前/后”屏幕截图,显示一个应用程序从8M到420 K。我认为这实际上只是减少了应用程序的工作集,而不是真正的内存需求。同样的“优化”似乎会发生,如果你最小化一个应用程序。它不会突然占用更少的记忆。我不相信桌面.NET框架真的只能在420 K下运行。
自动密封功能很有趣--除了查找虚拟方法之外,我看不出它有什么帮助。我怀疑这种影响是否真的很重要,但我当然还没有拿它作为基准。
所以,没有定论,但我怀疑它是否做了我特别想做的任何事情。
发布于 2012-10-22 16:55:20
我可能错了,但在我看来,SmartAssembly将数据推送到页面文件中。如果在任务管理器中选择CommitSize和PF增量列,您将看到尽管WorkingSet减小了大小,但提交大小几乎保持不变。如果您随后尝试访问应用程序中的某些内容,您将看到大量的页面错误。
如果这是“内存优化”的行为,那么我认为这个名称不适合这个特性,应该简单地称为“去优化”,因为访问页面文件的成本会显著降低性能。
这种解释我错了吗?
https://stackoverflow.com/questions/339862
复制相似问题