sebastien created MNG-7899: ------------------------------ Summary: Various memory usage improvements Key: MNG-7899 URL: https://issues.apache.org/jira/browse/MNG-7899 Project: Maven Issue Type: Improvement Components: Design, Patterns & Best Practices, Embedding, General, Logging Affects Versions: 4.0.0-alpha-2 Reporter: sebastien
Some optimisations can be applied to the code to reduce the use of temporary objects. Typical improvements identified are: * reduce scope of temporary objects creation to avoid creating when not needed. Example : {code:java} public String toString() { StringBuilder sb = new StringBuilder(512); if (isEmpty()) { return "empty"; } for (MetadataGraphVertex v : vertices) { .....{code} can be replaced by {code:java} public String toString() { if (isEmpty()) { return "empty"; } StringBuilder sb = new StringBuilder(512); for (MetadataGraphVertex v : vertices) { .....{code} * Reuse StringBuilder objects in loops by setting its length to zero * Use the StringBuilder.append() with index to avoid String.substring(). Example: {code:java} int idx = resourceName.lastIndexOf('/'); buffer.append(idx < 0 ? resourceName : resourceName.substring(idx + 1)); {code} can be replaced by {code:java} int idx = resourceName.lastIndexOf('/'); if (idx < 0) { buffer.append(resourceName); } else { buffer.append(resourceName, idx + 1, resourceName.length()); } {code} * Replace dynamic string creation static constants when possible * Avoid creating temporary strings with + operator when the final destination can be used instead, like PrintStream.print() method * Avoir using StringBuilder.append() method and util method MessageUtils.a() when the final destination can be used instead, like PrintStream.print() method -- This message was sent by Atlassian Jira (v8.20.10#820010)