ちょうどこのウェブサイトに出くわしました。機能9はメモリ管理であり、彼らの製品は「メモリを自動的に解放する」と主張しています。
これはマーケティング戦略ですか、それとも彼らは彼らの袖にいくつかのトリックを持っていると思いますか?いずれにせよ、.Netランタイムが提供するものに基づいて主張しているだけですか(または、GC.Collect()を呼び出してあえぎますか?)
この製品にはあまり興味がないので、DotFuscatorで十分です。これを実現する方法に本当に興味があります。
ちょうどこのウェブサイトに出くわしました。機能9はメモリ管理であり、彼らの製品は「メモリを自動的に解放する」と主張しています。
これはマーケティング戦略ですか、それとも彼らは彼らの袖にいくつかのトリックを持っていると思いますか?いずれにせよ、.Netランタイムが提供するものに基づいて主張しているだけですか(または、GC.Collect()を呼び出してあえぎますか?)
この製品にはあまり興味がないので、DotFuscatorで十分です。これを実現する方法に本当に興味があります。
面白い。
2007年のレビューには次の内容が含まれています。
{smartassembly} は、いくつかの異なる手法を使用してメモリ使用量を減らします。
{smartassembly} の開発者に詳細を尋ねたところ、要求の有無にかかわらず、デフォルトで CLR は .NET アセンブリ用に大量のメモリを予約しているとのことでした。したがって、{smartassembly} は、CPU がアイドル状態 (またはその付近) であることをインテリジェントに検出し、その要件に応じてアセンブリ用に予約されているメモリの量を増減します。ある意味では「自動化された」GC ですが、メモリが以前に使用された場合と使用されなかった場合を除きます。使用中で。
同じように、{smartassembly} (.NET の設計方法により、文字通りソース コードにアクセスできるという利点があります) は、検出可能な「子」クラスを持たないすべてのクラスを、それらから継承したものとしてマークします。これにより、実行時に CLR が使用するメモリと CPU の量を減らして、他のクラスやライブラリで使用できる関数を決定します。
同じレビューには、アプリケーションが 8M から 420K になることを示すスクリーンショットの「前後」のペアがあります。これは、実際のメモリ要件ではなく、アプリケーションのワーキング セットを削減しているだけであることを示唆しています。アプリを最小化すると、同じ「最適化」が行われるように見えます。メモリ使用量が突然減ることはありません。デスクトップ .NET フレームワークが実際に 420K だけで実行できるとは思えません。
自動シーリング機能は興味深いです。仮想メソッドの検索以外に役立つとは思えません。影響が本当に大きいとは思えませんが、もちろんベンチマークはしていません。
したがって、決定的なものは何もありませんが、私が特に望んでいることを行っているとは思えません。
私は間違っているかもしれませんが、SmartAssembly がデータをページ ファイルにプッシュしているように思えます。タスク マネージャーで CommitSize 列と PF delta 列を選択すると、WorkingSet のサイズは縮小されますが、コミット サイズはほぼ同じままであることがわかります。その後、アプリケーション内の何かにアクセスしようとすると、多くのページ フォールトが発生します。
これが「メモリ最適化」の動作である場合、その名前は機能に合わないと思います。ページ ファイルへのアクセスのコストがパフォーマンスを大幅に低下させる可能性があるため、単に「最適化解除」と呼ぶ必要があります。
この解釈は間違っていますか?