|
@@ -33,28 +33,28 @@ public class DirectMemoryReporterImpl {
|
|
|
public void init() {
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ try {
|
|
|
+ Field field = ReflectionUtils.findField(PlatformDependent.class, "DIRECT_MEMORY_COUNTER");
|
|
|
+ field.setAccessible(true);
|
|
|
+ directMemory = (AtomicLong) field.get(PlatformDependent.class);
|
|
|
+ Field field1 = ReflectionUtils.findField(PlatformDependent.class, "DIRECT_MEMORY_LIMIT");
|
|
|
+ field1.setAccessible(true);
|
|
|
+ maxDirectMemory = (Long) field1.get(PlatformDependent.class);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ TimerTask timerTask = new TimerTask() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ System.out.println("task run:" + new Date());
|
|
|
+ long m = directMemory.get();
|
|
|
+ logger.error(BUSINESS_KEY + "maxDirectMemory==={}:{}K", maxDirectMemory, m);
|
|
|
+ }
|
|
|
+ };
|
|
|
+ Timer timer = new Timer();
|
|
|
+
|
|
|
+ timer.schedule(timerTask, 10, 2000);
|
|
|
}
|
|
|
|
|
|
}
|