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)

Reply via email to