昨日仕事で問題が発生し、サーバーのメモリ占有率が98%と高いことがわかりました。同僚に確認してもらいました。実際にこれほど大量のメモリを占有しているファイルはどれですか。
同僚から、次のコマンドを使用してファイルが占有しているメモリを表示するように教えられました
df -h查看系统中文件的使用情况
du -sh *查看当前目录下各个文件及目录占用空间大小
du -shコマンドを使用した後、ログログが大量のメモリを占有していることがわかりました。
ログをもう一度見てみると、大量のデータを取得するためのクエリであり、forループでは、BeanUtils.copyPropertiesメソッドを使用してオブジェクトをコピーすると、次のように、このメソッドはログに多数のプロパティコピープロセスを記録します。
sid:PC123456_00123 client_IP:10-21 09:30:00.012 [THREAD-ID=12345] DEBUG:o.a.c.b.converters.StringConverter - Using default value ''
sid:PC123456_00123 client_IP:10-21 09:30:00.012 [THREAD-ID=12345] DEBUG:o.apache.commons.beanutils.BeanUtils = BeanUtils.copyProperties(com.test.User@2d565be,com.test.User@298442)
sid:PC123456_00123 client_IP:10-21 09:30:00.012 [THREAD-ID=12345] DEBUG:o.a.c.b.converters.StringConverter - Converting 'String' value 'hello' to type 'String'
コードを最適化した後、大量のデータが含まれるこの種のコレクションでは、コード自体に問題があります。この方法は使用しないでください。この方法の属性複製は使用しないことをお勧めします。