Swings Javaアプリケーションがあるとします。最小ヒープを64MB、最大ヒープを2GBに設定します。ユーザーがアプリケーションを起動すると、ログイン画面が表示されます。このとき、アプリは64MBを使用します。私のWindows7から、JavaアプリケーションがOSのメモリリソースモニターから64MBに割り当てられていることがわかります(実際には、JVMはそのタスクのためにいくらかのメモリを必要とするため、64MBを超えています)。
その後、ユーザーは非常に重い仕事をし、アプリケーションは2Gを使用します。次に、ユーザーがアプリケーションをログアウトすると、ログイン画面が再度表示されます(アプリケーションはまだ閉じられていません)。現時点では、アプリケーションが使用している実際のメモリは64MBです(これが完璧なメモリ管理アプリケーションであると仮定します)が、OSではこのアプリケーションはまだ2GのRAMを使用しているため、OSのリソースモニターで確認できます。
大きなメモリを使用する必要がないときに、アプリケーションがOSにメモリを解放するようにします。実行時にJavaアプリでそれを行うことはできますか?
つまり、アプリケーションで64MBのRAMを使用する必要がある場合、OSは64MBのみを提供し、2GBのRAMが必要な場合、OSは2GBを提供し、その後、64MBのRAMが必要であり、OSは再び64MBのみを提供します。 2000MB-64MB=1936MBを無駄にしたくない。
それをしてもいいですか?
ありがとう、