1

このオブジェクトのプール (org.apache.commons.pool2 を使用) があり、そこから 1 つを借用 (または作成) します。

設定した最大アイドル サイズは 3 (最大サイズは 5) です。これは、アイドル状態のオブジェクトが 3 つ以上ある場合、それらが破棄されるという理解に基づいて設定されました (BasePooledObjectFactory#destroyObject)

これが私のシステムで行うことは、コストがかかるいくつかのオブジェクトを作成および破棄することです。アイドル状態が長時間(1分など)の場合にのみ破棄したいと思います。

これを行うために setMinEvictableIdleTimeMillis (デフォルトは 30 分) を設定してみました。デフォルトだけでなく、設定も機能していないようです-アイドルカウントが4を超えると、オブジェクトが頻繁に破棄されることがわかります.

アイドル状態のオブジェクトが頻繁に破棄されないようにするにはどうすればよいですか?

4

1 に答える 1

0

使うminEvictableIdleTimeMillisだけでは不十分

timeBetweenEvictionRunsMillisまた、デフォルトで -1 である whichも指定する必要があります。

プールオブジェクトは検証/クリーナースレッドによって削除されているため、このスレッドを実行するため、理想的なスレッドをtimeBetweenEvictionRunsMillisチェックしてそれらを削除します。minEvictableIdleTimeMillis

于 2021-10-01T14:46:15.450 に答える