2011-02-23 3 views

答えて

23

キャッシュ - 頻繁に使用される値を格納します。これは通常、ルックアップや作成が重要でないためです。例えばデータベースのルックアップテーブルが頻繁に使用されたり、値がディスク上のファイルから読み取られたりすると、メモリ内に保持して定期的に更新する方が効率的です。

キャッシュはキャッシュ内のオブジェクトの有効期間のみを管理しますが、キャッシュに保持されているものにセマンティクスを課すものではありません。キャッシュはアイテムを作成するのではなく、オブジェクトを格納するだけです。

プール - プール自体によって管理されるリソースのグループを表す用語。例えば(データベース)接続プール - 接続が必要な場合はプールから取得し、終了した場合はプールに戻します。

プール自体は、プールされたオブジェクトの作成と破棄を処理し、一度に作成できるオブジェクトの数を管理します。

プールは通常、オーバーヘッドを減らし、リソースへのアクセスを制限するために使用されます。すべてのサーブレット要求がデータベースへの新しい接続を開くことを望まないでしょう。アクティブな要求とオープンな接続との間に1対1の関係があるためです。これらの接続を破壊するオーバーヘッドは無駄であり、データベースを簡単に圧倒することができます。プールを使用することにより、これらのオープンな接続を共有することができます。例えば、500のアクティブな要求は、典型的な要求が接続を必要とする時間に応じて、わずか5つのデータベース接続を共有することができる。

キャッシュプール - ほとんどの(独立した?)キャッシュの数を記述しているようです。例えば。 asp.netアプリケーションには、アプリケーションドメインごとに1つのキャッシュがあります(キャッシュはasp.netアプリケーション間で共有されません)。文字通りキャッシュのプールですが、この用語はめったに使用されないようです。

6

キャッシングは、通常はリソースを節約するために値/オブジェクトを保存して再利用します。

Wikipediaは言う:

キャッシュはそのデータのための今後の要求がより早く提供できるように、透過的にデータを格納する構成要素です。

ポーリングは、そのようなオブジェクト(プール)の数が多い場合に似ています。オブジェクトをプールから取り出して使用すると、後で再利用できるようにプールに戻されます。

Wikipediaは言う:コンピュータサイエンスの

プールは、オンデマンドで割り当てられ、破壊されたのではなく、使用する準備ができて保持されている初期化リソースのセットです。

2

両方ともオブジェクトの再利用を目指しています。この区別は、通常、ステートフルフォースに沿って行われます。プールはステートレスなオブジェクトの集合であり、キャッシュはステートフルなオブジェクトの1つです。 this explanationを参照してください。

3

キャッシュとは通常、高速検索のためにデータの静的コピーを保持すること(値の取得または計算が高価であることを前提とします)を指します。

通常、プーリングは、(リソースの作成または廃棄が高価であることを前提として)迅速な使用のために多数のリソースを保持することを指します。

0

プロセスのメモリフットプリントを再利用したり減らしたりするために(オブジェクト作成オーバーヘッドもなくなります)。 1つの注目すべき違いは、プールでは、キャッシュ内(少なくともLRU内)で新しく作成されたオブジェクト用のスペースを確保するためにオブジェクトを退去させるコンテキストの存続期間中、同じオブジェクトを何度も何度も繰り返し使用することです。

次の質問の回答がもう1つあります。特定のオブジェクトが返されたかったり、オブジェクトが正常に返されたりしますか?その答えは、あなたが必要とするもの、つまりキャッシュまたはプールを明確にします。

関連する問題