私は、ギガバイトのデータ、主にプリミティブと文字列を扱うプログラムに取り組んでいます。オートボクシングによってプリミティブがオブジェクトに変換されるのを避ける必要があります。これは、ヒープサイズとGC時間を爆発させるためです。Javaでオートボクシングを検出/回避するにはどうすればよいですか?
現在、私はVisualVMでコードを変更して実行しており、何百万もの余分な整数やショート、オブジェクトを持っているのを見ています。次に、デバッガのコードをライブラリとJDKクラスに移動して、ボクシングの発生場所を確認します。これに役立つツールがありますか?
私はIDEとしてIntellijを使用しています。 Intellijでは、検査を使用して独自のコードでオートボックスを見つけることができますが、ライブラリコードには拡張されていないようです。これを行うには、メニューから選択します。
Analyzye >>実行検査を名前で...
はその後プロンプトで「自動」を入力します。自動ボクシング検査が選択のために現れるはずです。ただし、この時点で私は自分のコードから本質的にすべての自動ボックスを削除しました。私が必要とするのは、プリミティブをライブラリメソッドに渡すときに見つけることができることです。ライブラリコードは、いつでもプリミティブを自動的にボクシングします。
自動ボクシングが問題になるデータ量を処理する場合、Javaはアプリケーションに適した言語ではない可能性があります。 cまたはC++の使用を検討してください。あるいは、データを処理してJavaアプリケーションの中に結果を表示するプログラムをC言語で記述することもできます。 –
[findbugs](https://plugins.jetbrains.com/plugin/3847)を試してみましたか? –
この関連する質問には、いくつかの有益な提案が含まれています。 http://stackoverflow.com/questions/15818875/how-to-disable-auto-boxing-for-java-in-intillij-idea –