
resources.report.rules.pmd.DoNotCallGarbageCollectionExplicitly.html Maven / Gradle / Ivy
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(); } }
© 2015 - 2025 Weber Informatics LLC | Privacy Policy