# TakeTempSnapshot(Action<string, bool>, CaptureFlags)

> Triggers a memory snapshot capture to the Application.temporaryCachePath folder.

## Definition

* **Type:** Method
* **Namespace:** [Unity.Profiling.Memory](/engine/6000.5/script-reference/unity/profiling/memory.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
public static void TakeTempSnapshot(Action<string, bool> finishCallback, CaptureFlags captureFlags = CaptureFlags.ManagedObjects | CaptureFlags.NativeObjects)
```

### Parameters

**** (\[Action\<string, bool>]\(https\://learn.microsoft.com/dotnet/api/system.action)): Event that is fired once the memory snapshot has finished the process of capturing data.**** (\[CaptureFlags]\(/engine/6000.5/script-reference/unity/profiling/memory/captureflags)): Flag mask defining the content of the memory snapshot.

### Remarks

Internally [MemoryProfiler.TakeSnapshot](/engine/6000.5/script-reference/unity/profiling/memory/memoryprofiler/takesnapshot.md) is called with the destination path set to the "\<[Application.temporaryCachePath](/engine/6000.5/script-reference/unityengine/application/temporarycachepath.md)>/\\\<projectName\\>.snap".

```csharp
using System.Collections;
using System.IO;
using Unity.Profiling.Memory;
using UnityEngine;

public static class MemoryProfilerExample
{
    public static IEnumerator TakeSnapshot()
    {
        bool snapshotFinished = false;
        string resultingSnapshotPath = null;
        MemoryProfiler.TakeTempSnapshot((filePath, success) =>
        {
            snapshotFinished = true;
            if (success)
            {
                resultingSnapshotPath = Path.GetFullPath(filePath);
                Debug.Log($"Snapshot captured and stored at {resultingSnapshotPath}.");
            }
            else
            {
                Debug.LogError("Failed to take a snapshot.");
            }
        },
            CaptureFlags.ManagedObjects | CaptureFlags.NativeObjects | CaptureFlags.NativeAllocations);

        while (!snapshotFinished)
        {
            yield return null;
        }

        if (resultingSnapshotPath != null && File.Exists(resultingSnapshotPath))
        {
            var fileName = Path.GetFileName(resultingSnapshotPath);
            // Ensure a unique file name to move this file to.
            var finalPath = Path.Combine(Application.persistentDataPath, "DateTime.Now.Ticks" + fileName);

            // Remove any pre-existing file first.
            if (File.Exists(finalPath))
                File.Delete(finalPath);

            //  Move the file out of the temporary cache to somewhere more permanent.
            File.Move(resultingSnapshotPath, finalPath);

            // If you don't have access to the Player's file system you could also upload the file to an end-point that is accessible to you here.
        }
    }
}
```

Additional Resources:  [Application.temporaryCachePath](/engine/6000.5/script-reference/unityengine/application/temporarycachepath.md), [MemoryProfiler.TakeSnapshot](/engine/6000.5/script-reference/unity/profiling/memory/memoryprofiler/takesnapshot.md).
