# SystemCleaner

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Summary: [Methods](https://developer.android.com/reference/android/system/SystemCleaner#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/system/SystemCleaner#inhmethods)  

# SystemCleaner

*** ** * ** ***

[Kotlin](https://developer.android.com/reference/kotlin/android/system/SystemCleaner "View this page in Kotlin") \|Java


`
public

final

class
SystemCleaner
`


`

extends `[Object](https://developer.android.com/reference/java/lang/Object)`


`

`


`

|---|------------------------------|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.system.SystemCleaner |

<br />

*** ** * ** ***

Java.lang.ref.Cleaner encourages each library to create a Cleaner, with an associated
thread, to process Cleaner Runnables for that library's registered cleaning actions.
This approach isolates cleaning actions from different libraries from each other; a slow cleaning
action in one library will only minimally affect cleaning actions in another.

However, this comes at the cost of introducing one Cleaner thread per library that uses
Cleaners. This could introduce dozens of additional threads per process, which is often
not an acceptable cost, especially on memory-limited devices.

SystemCleaner instead provides access to a shared Cleaner, shared across the entire process.
It is greatly preferred when all cleaning actions registered by a client are known to
complete quickly, without explicit I/O, interprocess communication, or network access.
Registering a non-terminating or excessively slow cleaning action with the shared cleaner
may cause the process to perform very badly, hang, or be killed.

## Summary

|                                                                                                                   ### Public methods                                                                                                                   ||
|------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` static `[Cleaner](https://developer.android.com/reference/java/lang/ref/Cleaner) | ` `[cleaner](https://developer.android.com/reference/android/system/SystemCleaner#cleaner())`() ` Return a single Cleaner that's shared across the entire process. |

| ### Inherited methods |
|-----------------------|---|
| From class ` `[java.lang.Object](https://developer.android.com/reference/java/lang/Object)` ` |--------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` `[Object](https://developer.android.com/reference/java/lang/Object)          | ` `[clone](https://developer.android.com/reference/java/lang/Object#clone())`() ` Creates and returns a copy of this object.                                                                                                                                                        | | ` boolean`                                                                     | ` `[equals](https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object))`(`[Object](https://developer.android.com/reference/java/lang/Object)` obj) ` Indicates whether some other object is "equal to" this one.                                             | | ` void`                                                                        | ` `[finalize](https://developer.android.com/reference/java/lang/Object#finalize())`() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.                                                            | | ` final `[Class](https://developer.android.com/reference/java/lang/Class)`<?>` | ` `[getClass](https://developer.android.com/reference/java/lang/Object#getClass())`() ` Returns the runtime class of this `Object`.                                                                                                                                                 | | ` int`                                                                         | ` `[hashCode](https://developer.android.com/reference/java/lang/Object#hashCode())`() ` Returns a hash code value for the object.                                                                                                                                                   | | ` final void`                                                                  | ` `[notify](https://developer.android.com/reference/java/lang/Object#notify())`() ` Wakes up a single thread that is waiting on this object's monitor.                                                                                                                              | | ` final void`                                                                  | ` `[notifyAll](https://developer.android.com/reference/java/lang/Object#notifyAll())`() ` Wakes up all threads that are waiting on this object's monitor.                                                                                                                           | | ` `[String](https://developer.android.com/reference/java/lang/String)          | ` `[toString](https://developer.android.com/reference/java/lang/Object#toString())`() ` Returns a string representation of the object.                                                                                                                                              | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long,%20int))`(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long))`(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.                   | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait())`() ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*.                                                                                             | ||

## Public methods

### cleaner

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static Cleaner cleaner ()
```

Return a single Cleaner that's shared across the entire process. Thread-safe.
Unlike normal Cleaners, uncaught exceptions during cleaning will throw an uncaught
exception from the daemon running the cleaning action. This will normally cause the
process to crash, and thus cause the problem to be reported.

<br />

|                                                    Returns                                                    ||
|--------------------------------------------------------------------------|-------------------------------------|
| [Cleaner](https://developer.android.com/reference/java/lang/ref/Cleaner) | This value cannot be `null`. <br /> |