rspec/rules/S1215/description.adoc

10 lines
770 B
Plaintext
Raw Normal View History

2020-12-23 14:59:06 +01:00
Calling ``System.gc()`` or ``Runtime.getRuntime().gc()`` is a bad idea for a simple reason: there is no way to know exactly what will be done under the hood by the JVM because the behavior will depend on its vendor, version and options:
2020-06-30 12:47:33 +02:00
* Will the whole application be frozen during the call?
2020-12-23 14:59:06 +01:00
* Is the ``-XX:DisableExplicitGC`` option activated?
2020-06-30 12:47:33 +02:00
* Will the JVM simply ignore the call?
* ...
2020-12-23 14:59:06 +01:00
Like for ``System.gc()``, there is no reason to manually call ``runFinalization()`` to force the call of finalization methods of any objects pending finalization.
2020-12-23 14:59:06 +01:00
An application relying on these unpredictable methods is also unpredictable and therefore broken. The task of running the garbage collector and calling ``finalize()`` methods should be left exclusively to the JVM.