resources.report.rules.pmd.DoNotCallGarbageCollectionExplicitly.html Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sanity4j Show documentation
Show all versions of sanity4j Show documentation
Sanity4J was created to simplify running multiple static code
analysis tools on the Java projects. It provides a single entry
point to run all the selected tools and produce a consolidated
report, which presents all findings in an easily accessible
manner.
The newest version!
DoNotCallGarbageCollectionExplicitly
DoNotCallGarbageCollectionExplicitly
Calls to System.gc(), Runtime.getRuntime().gc(), and System.runFinalization() are not advised. Code should have the
same behavior whether the garbage collection is disabled using the option -Xdisableexplicitgc or not.
Moreover, "modern" jvms do a very good job handling garbage collections. If memory usage issues unrelated to memory
leaks develop within an application, it should be dealt with JVM options rather than within the code itself.
This rule is defined by the following XPath expression:
//Name[
(starts-with(@Image, 'System.') and
(starts-with(@Image, 'System.gc') or
starts-with(@Image, 'System.runFinalization'))) or
(
starts-with(@Image,'Runtime.getRuntime') and
../../PrimarySuffix[ends-with(@Image,'gc')]
)
]
Example:
[
public class GCCall
{
public GCCall()
{
// Explicit gc call !
System.gc();
}
public void doSomething()
{
// Explicit gc call !
Runtime.getRuntime().gc();
}
public explicitGCcall() { // Explicit gc call ! System.gc(); }
public void doSomething() { // Explicit gc call ! Runtime.getRuntime().gc(); } }