Я хотел получать дампы кучи для своего универсального Java-приложения через равные промежутки времени в виде CSV-файлов. Допустим, у меня есть программа
public class Test {
public static void main(String[] args) throws Exception {
// Code to be profiled
}
}
Я хотел регулярно проверять дампы кучи после запуска программы и генерировать csv, как показано ниже.
Time Committed size Free size Used size
0.0 251392000 235881000 15511000
1.0 456704000 264288000 192416000
2.0 1024000000 756641000 267359000
3.01 1035776000 217595000 818181000
4.01 1494528000 153111000 1341417000
5.02 1444352000 1235099000 209253000
6.02 1546240000 1185698000 360542000
Это похоже на информацию, которая передается в visualvm/jprofiler и т. д. для создания диаграмм дампа памяти.
Я мог бы легко добиться этого программно (через строку cmd и jprofiler api), используя jprofiler с jcontroller и jpexport , но я не смог понять, как сделать то же самое с другими подобными инструментами, такими как visualvm , jmap и т. д.
Я ищу программный способ профилирования java-программы (здесь Test.java) без использования графического интерфейса. Аналогичный вопрос задан здесь , но предлагаемое решение - это плагин Tracer для visualvm, который снова потребует использования графического интерфейса. Самое близкое решение, которое я нашел, — это использовать JMX, как в данном примере здесь, но я не мог заставить его работать на меня.
Есть ли способ добиться этого для меня? В качестве примечания я использую Java SE 8 на Mac.