package org.gridkit.jvmtools.gcmon;
import java.lang.management.ManagementFactory;
import java.util.ArrayList;
import java.util.List;
import org.gridkit.jvmtool.gcmon.MemoryPoolEventConsumer;
import org.gridkit.jvmtool.gcmon.MemoryPoolInfoEvent;
import org.gridkit.jvmtool.gcmon.MemoryPoolPoller;
import org.junit.Test;
public class MemPoolEventTest {
@Test
public void pollerSmoke() {
MemoryPoolPoller poller = new MemoryPoolPoller(ManagementFactory.getPlatformMBeanServer(), new Consumer());
poller.poll();
List<Object> buf = new ArrayList<Object>();
for(int i = 0; i != 10000; ++i) {
if (i < 100) {
buf.add(new byte[1024]);
}
buf.set(i % 100, new byte[1024]);
}
poller.poll();
for(int i = 0; i != 10000; ++i) {
buf.set(i % 100, new byte[1024]);
}
poller.poll();
}
public class Consumer implements MemoryPoolEventConsumer {
@Override
public void consumeUsageEvent(MemoryPoolInfoEvent event) {
System.out.println(event.timestamp() + " consumeUsageEvent: " + event.tags() + " " + event.counters());
}
@Override
public void consumePeakEvent(MemoryPoolInfoEvent event) {
System.out.println(event.timestamp() + " consumePeakEvent: " + event.tags() + " " + event.counters());
}
@Override
public void consumeCollectionUsageEvent(MemoryPoolInfoEvent event) {
System.out.println(event.timestamp() + " consumeCollectionUsageEvent: " + event.tags() + " " + event.counters());
}
}
}