private void emitThreadAllocationMetrics(ServiceEmitter emitter) { final ServiceMetricEvent.Builder builder = builder(); MonitorUtils.addDimensionsToBuilder(builder, dimensions); if (collector != null) { long delta = collector.calculateDelta(); emitter.emit(builder.build("jvm/heapAlloc/bytes", delta)); } }
/** * Test a calculated delta is larger than objects size generated by this method. * @throws InterruptedException */ @SuppressWarnings("OptionalIsPresent") @Test public void testDelta() throws InterruptedException { AllocationMetricCollector collector = AllocationMetricCollectors.getAllocationMetricCollector(); if (collector == null) { return; } long delta = collector.calculateDelta(); Assert.assertNotNull(delta); Assert.assertTrue(delta > 0); log.info("First delta: %s", delta); int generatedSize2 = generateObjectsConcurrently(1000); long delta2 = collector.calculateDelta(); Assert.assertTrue(delta2 > generatedSize2); log.info("Second delta: %s", delta2); int generatedSize3 = generateObjectsConcurrently(100000); long delta3 = collector.calculateDelta(); Assert.assertTrue(delta3 > generatedSize3); log.info("Third delta: %s", delta3); }