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
newoperatorMethods known to return new object
Instance-bound method references
Lambdas that capture variables or
thisreference
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);
}- By ID
Can be used to locate inspection in e.g. Qodana configuration files, where you can quickly enable or disable it, or adjust its settings.
ObjectAllocationInLoop
You can suppress this inspection by placing the following comment marker before the code fragment where you no longer want messages from this inspection to appear:
//noinspection ObjectAllocationInLoopnote
Actual comment syntax will depend on the code language you are working with
More detailed instructions as well as other ways and options that you have can be found in the product documentation:
Inspection Details | |
|---|---|
By default bundled with: |