Я хочу собрать кучу использования программы. В частности, от конкретного события запуска до конечного события и с заданным интервалом, например, каждые 10 мс. Я попытался реализовать что-то вроде этого сам, это следующий код. Он работает на медленных интервалах, например, 1 секунда, но для более низких интервалов, например 100 мс, он становится глючным. Выполняет ли метод System.gc() все потоки, пока он не завершится? В настоящее время я предполагаю, что так.Профилирование Java-кучи между двумя событиями
public void startAsync()
{
running = true;
Thread thread = new Thread(new Runnable()
{
@Override
public void run()
{
while (running)
{
measure();
try
{
Thread.sleep(wait);
} catch (InterruptedException e)
{
throw new RuntimeException();
}
}
}
});
thread.start();
}
public void measure()
{
MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean();
memoryBean.gc();
long currentTime = System.currentTimeMillis();
MemoryUsage memoryUsage = memoryBean.getHeapMemoryUsage();
writer.exec(currentTime - startTime, memoryUsage.getUsed());
}
Ваши измерения сами измеряют :) – khachik 2010-12-06 15:26:29