# Deinitialize()

> Stops Adaptive Performance and cleans up all associated resources and objects.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine.AdaptivePerformance](/engine/6000.6/script-reference/unityengine/adaptiveperformance.md)
* **Assembly:** UnityEngine.AdaptivePerformanceModule

```csharp
public static void Deinitialize()
```

### Remarks

Use this method to perform a complete shutdown of the Adaptive Performance system. This method first stops any running Adaptive Performance operations by calling [IAdaptivePerformance.DeinitializeAdaptivePerformance](/engine/6000.6/script-reference/unityengine/adaptiveperformance/iadaptiveperformance/deinitializeadaptiveperformance.md). It then cleans up the provider infrastructure and sets [Holder.Instance](/engine/6000.6/script-reference/unityengine/adaptiveperformance/holder/instance.md) to null.

After this method completes successfully, all Adaptive Performance functionality is unavailable until [Holder.Initialize](/engine/6000.6/script-reference/unityengine/adaptiveperformance/holder/initialize.md) is called again.

It's safe to call this method even if Adaptive Performance isn't currently initialized.

### Examples

```csharp
using UnityEngine;
using UnityEngine.AdaptivePerformance;

public class AdaptivePerformanceManager : MonoBehaviour
{
    void OnApplicationPause(bool pauseStatus)
    {
        if (pauseStatus)
        {
            // Adaptive Performance state before deinitialization.
            Debug.Log($"Adaptive Performance initialized: {Holder.Instance.Initialized}");

            // Clean up Adaptive Performance when app is paused.
            Holder.Deinitialize();
            Debug.Log("Adaptive Performance deinitialized");

            // Adaptive Performance state after deinitialization.
            Debug.Log($"Adaptive Performance initialized: {Holder.Instance!=null && Holder.Instance.Initialized}");
        }
    }
}
```
