nginx、apache、tomcat7を備えたWebサーバーがあります。 このサーバーでjavaプログラムを実行します。 また、パテでサーバーにアクセスできます。
通常、1日1回サーバーのヒープメモリ(CMS Old Gen-100%のヒープメモリ)がいっぱいで、プログラムが本当に遅くなっています。次に、サーバーにログインし、tomcat7サービスを再起動します。ヒープメモリがクリアされ、プログラムが再び正常に実行されます。
そこで、2つの質問があります。
- プログラムまたはサーバーからガベージコレクションを実行する必要がありますか?
- ガベージコレクションがサーバー上にある場合、どのように有効にしますか?
これがあなたにとって十分な情報であるかどうかはわかりません。何か必要な場合はお知らせください。
敬具
編集:
最大メモリプールタイプ CMS Old Genヒープメモリ316.81 MB Edenスペースヒープメモリ66.56 MB サバイバースペースヒープメモリ8.31 MB 合計391.68 MB
これはApache Managerからの抜粋です(残念ながら、まだ写真を投稿できません。)CMS Old Genが100%になっていると、プログラムの実行が非常に遅くなります。 アプリのローカルバージョンでJVMモニターを起動して、リークがないか確認しました。どうやら、ガベージコレクターはそこで適切に実行されますが、サーバー上では実行されません。
助言がありますか?
そのため、ヒープサイズを増やして、リークを閉じようとしています。 手伝ってくれてどうもありがとう。またねー
回答:
回答№1は2ガベージコレクターはデフォルトで実行されます。実行されていることを確認したい場合は、-Xloggc:{file}オプションを使用してjvmを起動し、アクティビティのデバッグ情報を取得できます。
コメントがすでに指摘しているように、tomcatを再起動してヒープをクリアする必要がある場合、おそらくアプリケーションでメモリリークが発生しています。