2016-06-01 6 views
0

私はプロジェクトのパフォーマンス向上に取り組んでいます(Springプロジェクトでは、7ヶ月程度の経験がありません)メモリの大部分がキャッシング中に利用されていることを示します。いくつかのR & Dの後、私はEhcacheが私を助けてくれるかもしれないことを発見しました。私のプロジェクトでは、スタティックなHashMapを使用してサーバーのデータをDBからロードし、アプリケーション全体でこのマップを使用しています。私はEcacheとSpring(春のブートではない)のいくつかの例を見ましたが、どこにHashMapsが存在する既存のコードに置き換えるのか理解できません。また、他のアドバイスや提案がある場合は、投稿してください。私は大きな助けになるでしょう..!同じ質問については、stackoverflowにいくつかのリンクがありますが、彼らはそれらのための答えを持っていない..助けてください..!ehcacheとspringを使用してキャッシング用のデータを読み込んで既存のキャッシング機構をオーバーライドする

+1

「HashMaps everywhere」?彼らは1つの局面になければならない。それはあなたの問題の大きな部分です。それらを1つに統合することであなたを助けることはできません。シャベルを手に入れて掘りはじめましょう。 'Everywhere'からの – duffymo

+0

私は、データをキャッシュしているすべてのデータベーステーブルについて説明します。巨大なデータサイズのためにたくさんのメモリを食べている場所が2つしかありません。 :) –

+0

キャッシング、ロギング、トランザクションは、アスペクト指向プログラミングが生まれたものです。自分自身をロールバックしたHashMapsからEhCacheまたは他の技術に切り替えることで、そのような巨大なエントリを小さくすることはできません。 EhCacheにも同じ問題があります。このような大きなオブジェクトをキャッシュする必要があるかどうか再考してください。どれくらい頻繁に使用されますか?古典的な時間/空間のトレードオフを行う必要があります。十分なスペースがあればキャッシュして時間を節約します。あなたがしなければ時間を費やします。あなたの問題はテクノロジーではありません。 – duffymo

答えて

2

データをHashMapに保存し、EHCacheを使用する場合は、このエントリがキャッシュ内に既に存在する場合は、1つのエントリのアクセス時間が今までの10倍以上になります。 「ヒットヒットのランタイム比較」(In Process Java Cache Benchmarks)を参照してください。

メモリに保存する場合は、データが要求されたときにリロードする必要があるため、アクセス時間が大幅に長くなります。

アプリケーションがHashMap上で動作し、HashMapsのロード後にDBにアクセスする必要がない場合は、実際にアプリケーションに合わせた完璧なカスタムキャッシュが既に用意されています。

+0

ああ、あなたの共有リンクを通過した後、私は今それを実現します。しかし、それでも私のDAOファイルの少なくとも1つについて自分自身でテストし、そのやり方を知りたいと思っていました。私の疑問に何かを加えることができれば、それは素晴らしいだろう.. .. :) –

関連する問題