Inspectopedia Help

'ThreadLocal.set()' with null as an argument

Reports java.lang.ThreadLocal.set() with null as an argument.

This call does not free the resources, and it may cause a memory leak.

It may happen because:

  • Firstly, ThreadLocal.set(null) finds a map associated with the current Thread. If there is no such a map, it will be created

  • It sets key and value: map.set(this, value), where this refers to instance of ThreadLocal

java.lang.ThreadLocal.remove() should be used to free the resources.

Example:

ThreadLocal<Integer> threadLocal = new ThreadLocal<>(); threadLocal.set(null);

After the quick-fix is applied:

threadLocal.remove();

New in 2023.2

Inspection Details

By default bundled with:

IntelliJ IDEA 2024.1, Qodana for JVM 2024.1,

Can be installed with plugin:

Java, 241.16690

Last modified: 29 April 2024