大きなドキュメントのすべてのページのサムネイルを生成するプログラムを書いています。パフォーマンス上の理由から、サムネイルをできるだけ長くメモリに保持したいと考えていますが、OS が別のより重要な用途があると判断した場合にそのメモリを再利用できるようにしたいと考えています (たとえば、ユーザーが用途が異なります。)
メモリがなくなった場合は、後でいつでもサムネイルを再生成できます。
必要に応じてメモリを削除できるというフラグを立てるためのクロスプラットフォームの方法はありますか? プログラムは C++ で書かれています。
編集:明確にするために、メモリが少なくなったときに通知されたり、システムのメモリ量を定期的に監視したりするのではなく、メモリを割り当ててから、使用していないときに「ロックを解除」する方法を考えています。その後、OS は必要に応じてロック解除されたメモリを盗むことができます (メモリをより有効に使用できると OS が判断した場合は、ディスク バッファの場合でも)。 . ロックに失敗した場合は、メモリが別の目的で再利用されていることがわかっているため、サムネイルを再生成する必要があります。ロックに成功した場合は、以前のデータを引き続き使用できます。
その理由は、おそらく 20 ページのドキュメントを画面に表示している可能性があるためですが、ユーザーが少しスクロールした場合に備えて、他の 200 ページほどのページのサムネイルを保持することもできます。しかし、彼らがしばらく何か他のことをする場合、そのメモリはディスクキャッシュとして、またはWebページなどを保存するために使用する方が良いかもしれません.それはしたいです。
システム全体の空きメモリの量を監視しなければならない場合、目標を達成できない可能性があり (ディスク キャッシュを改善するためにメモリが再利用されることはありません)、メモリ不足の通知を受け取ることは緊急時にのみ役立ちます。ロック/ロック解除方法を使用することで、これをより軽量な方法で実現し、緊急でない状況でシステムのパフォーマンスを向上させることができると期待していました.