Inspectopedia Help

Object allocation in loop

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:

  • Explicit allocations via new operator

  • Methods known to return new object

  • Instance-bound method references

  • Lambdas that capture variables or this reference

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); }

Inspection Details

Available in:

IntelliJ IDEA 2023.3, Qodana for JVM 2023.3

Plugin:

Java, 233.SNAPSHOT

Last modified: 13 July 2023