2017-07-10 5 views
0

単純なクライアントサーバープログラムjavaでは、クライアントからキー値とttlを取得しています生存時間(ttl)値が設定されている場合鍵は、ttlが期限切れになるとメモリから削除する必要があります。 入力がキー値time_to_live 例: hi there 60 上記の場合、キーhiは、設定されてから60秒後に削除する必要があります。このアイデアは?時間の経過後にJava変数がメモリから削除される

+1

何か試しましたか?あなたはどこにいるのですか? – shmosel

+0

私はこの問題をJavaで解決する方法を知っていません。( – Gowtham

+0

これはチュートリアルサイトではありません。特定の質問や問題があった場合、いくつかの調査を行い、試行して戻ってきます。 – shmosel

答えて

0

ここには2つの側面があります。

まず、Javaはガベージコレクション言語です。つまり、フルは、オブジェクトがを収集した時点で制御されません。です。あなたのコントロール下のアスペクトは、そのオブジェクトを指し示す「生きている」参照です。生きている参照が何らかのオブジェクトを指し示すとすぐに、そのオブジェクトはガベージコレクションの対象となります。そして、GCはいつそのオブジェクトを取り除くかを決定します。

しかし、あなたの質問は(おそらく)別の方向に向かっています。あなたは何をする必要がありますか:キャッシュクラスを実装します。これらは、新しいエントリが追加されたときに単にタイムスタンプを取ることができます。 x秒ごとに実行される監視スレッドがあります。モニタースレッドは、キャッシュ内で、ライフタイムの前にタイムスタンプを持つすべてのエントリを単純に削除します。

もちろん、実装するのは簡単ではありません(モニタースレッドとキャッシュからの読み取りを試みている他のスレッドとの競合状態を避けなければならないため)。

関連する問題