私はオブジェクトのキャッシングをいじっており (最初に独自のキャッシュを作成して、安定した実装になったものの非常に非効率的でした)、次に Memcached を使用してみました。
memcached は問題なく動作しますが、問題が発生しました。
オブジェクトの使用方法は次のとおりです。
- データベースからオブジェクトにデータを読み取り、そのオブジェクトを memcached に保存します。
- 数分ごとに memcached からオブジェクトを取得し、データベースまたは memcached 内の他のオブジェクトから追加データを取得し、新しいデータまたは関連データでオブジェクトを更新してから、オブジェクトを memcached に戻します。
- 表示する必要のあるオブジェクトは、memcached から取得され、パッケージ化されて、クライアント側のアプリケーションに送信されて表示されます。
memcached で作成、保存、更新、表示しているオブジェクトの数が多くなった場合を除いて、これは非常にうまく機能します。Java/Tomcat-jvm は、memcached から取り出したオブジェクトのガベージ コレクションを「十分に速く」実行していないようで、vm がメモリ不足になります。
私は 8GB のメモリに制限されています (memcached を使用して、できれば 4 に減らしたいと考えています)。ガベージコレクター)?
(PS Google の Guava キャッシュの使用を検討しましたが、これにより同時実行のオプションが制限されます。たとえば、Tomcat を再起動する必要があり、Guava と memcached の両方を使用すると、回避したい種類の重複のように思えます)
――ハイン。