예제 #1
0
    public void run() {
      while (true) {
        try {
          if (thread.isInterrupted() && !started) {
            break;
          }

          Thread.sleep(measureInterval);
        } catch (InterruptedException ignore) {
          if (!started) {
            break;
          }
        }

        long maxMemory = runtime.maxMemory();

        long totalMemory = runtime.totalMemory();

        long freeMemory = runtime.freeMemory();

        long availableMemory = freeMemory + maxMemory - totalMemory;

        double availableMemoryPercent = 100.0 * availableMemory / maxMemory;

        StringBuilder info = new StringBuilder();
        info.append(String.format("free memory:      %s%n", SizeFormatterUtil.sizeof(freeMemory)));
        info.append(String.format("max memory:       %s%n", SizeFormatterUtil.sizeof(maxMemory)));
        info.append(String.format("total memory:     %s%n", SizeFormatterUtil.sizeof(totalMemory)));
        info.append(String.format("available memory: %.2f%%%n", availableMemoryPercent));

        if (HornetQLogger.LOGGER.isDebugEnabled()) {
          HornetQLogger.LOGGER.debug(info);
        }

        if (availableMemoryPercent <= memoryWarningThreshold) {
          HornetQLogger.LOGGER.memoryError(memoryWarningThreshold, info.toString());

          low = true;
        } else {
          low = false;
        }
      }
    }