Findbugsプラグインを使用してEclipse Java EE juno SR2 win32を実行しています。
次のコードサンプルでは、FindBugs で結果を表示できます。
catch (OutOfMemoryError e) {
tryAgain = true;
log.error("try to recover", e);
System.gc(); // not so happy about this
}
で、解説はこちら
Bug: [..] forces garbage collection; extremely dubious except in benchmarking code
Code explicitly invokes garbage collection. Except for specific use in benchmarking, this is very dubious.
In the past, situations where people have explicitly invoked the garbage collector in routines such as close or
finalize methods has led to huge performance black holes. Garbage collection can be expensive. Any situation that forces
hundreds or thousands of garbage collections will bring the machine to a crawl.
Confidence: High, Rank: Of Concern (16)
Pattern: DM_GC
Type: Dm, Category: PERFORMANCE (Performance)
では、この行にチェックされないように注釈を付けるにはどうすればよいですか?
やってみた(ソース)
@edu.umd.cs.findbugs.annotations.SuppressWarnings("DM_GC")
System.gc();
これは機能していないので、メソッドに移動しました
@edu.umd.cs.findbugs.annotations.SuppressWarnings("DM_GC")
private bla(){
「eduは型に解決できません」と言っているので、次を試しました:
@SuppressWarnings("DM_GC")
private bla(){
そして、「サポートされていない @SuppressWarnings("DM_GC")」を受け取りました
これは、findbugs バグの解決に関する要求ではなく、特定のバグを無効にする方法です。
ありがとうございました!
参考までに: gc を呼び出すのはあまり良い考えではないことはわかっています。