Reports object or array allocations inside loops. While not necessarily a problem, an object allocation inside a loop is a great place to look for memory leaks and performance issues.

The inspection reports the following constructs:

Example:


  // Explicit allocation
  for (Status status : Status.values()) {
    declarationsMap.put(status, new ArrayList<>());
  }

  // Lambda captures variable
  String message = "Engine running.";
  for (Engine engine : engines) {
      if (!isRunning(engine)) {
          logger.warn(() -> {
              return String.format(message);
          });
      }
  }

  // Instance-bound method reference
  for(Node node : nodes) {
    descriptor = node.getDescription();
    descriptor.ifPresent(dynamicTestExecutor::execute);
  }