Я работаю над программой, которая постоянно занимается гигабайтами данных, в основном примитивов и строк. Мне нужно избегать примитивов, преобразованных в объекты посредством autoboxing, поскольку это взрывает размер кучи и время GC.Как я могу обнаружить/избежать автобоксинга в Java?
В настоящее время я вношу изменения и запускаю код в VisualVM и вижу, что у меня есть миллионы дополнительных целых чисел или шорт или объектов. Затем я просматриваю код в отладчике в своих библиотеках и классах JDK, чтобы найти, где происходит бокс. Есть ли инструменты для этого?
Я использую Intellij как свою IDE. В Intellij вы можете использовать проверку, чтобы найти авто-бокс в своем собственном коде, но он, похоже, не распространяется на библиотечный код. Для этого выберите в меню:
Analyzye >> Выполнить осмотр по имени ...
Затем введите в «Auto» в командной строке. Для выбора должен быть установлен автоматический бокс.
Однако на данный момент Я удалил практически все авто-бокс из собственного кода. Мне нужно, чтобы узнать, когда я передаю примитив в библиотечный метод, - это код библиотеки, автоматически устанавливающий примитив в любой момент.
Когда речь идет о количествах данных, когда автооблок становится проблемой, Java может быть не подходящим языком для вашего приложения. Рассмотрим использование c или C++. В качестве альтернативы вы можете написать программу на c, которая обрабатывает ваши данные, а затем отображает результаты в вашем приложении Java. –
Вы пробовали [findbugs] (https://plugins.jetbrains.com/plugin/3847)? –
Я нашел этот связанный вопрос, который содержит некоторые полезные предложения. http://stackoverflow.com/questions/15818875/how-to-disable-auto-boxing-for-java-in-intillij-idea –