Skip to content

Releases: needle-mirror/com.unity.memoryprofiler

1.1.12

10 Mar 22:09

Choose a tag to compare

[1.1.12] - 2026-03-10

Changed

  • Unified the display of unnamed native Unity objects in all tables, including the Reference tables to be "<No Name>".

Fixed

  • Fixed two native memory leaks during snapshot opening.
  • Fixed search field alignment in small memory profiler window configurations (UUM-133948).
  • Fixed error “InvalidOperationException: is a persistent scene object on Transform on GameObject that does not map to a prefab!“ on opening snapshots containing prefabs that are in the process of getting unloaded via the delayed deletion queue.
  • Fixed that table searches did not reliably allow searching for "<No Name>" objects, aka native Unity objects that do not have a name set to their .name property.
  • Fixed the "Reset Opt-Out settings for dialog prompts" button in the Memory Profiler preferences to work with the new EditorDialog.DisplayDecisionDialogWithOptOut() API in Unity 6000.3 and newer.

Added

  • Added a status and hint to the selected item details for persistent scene objects in the delayed deletion queue.
  • Added the hint to set the .name property for unnamed dynamic assets, even when they are marked as DontDestroyOnLoad.
  • Added a warning box to non-prefab scene objects (i.e. they are NOT assets) with the HideFlags.DontUnloadUnusedAsset set, additional to the warning logged on opening snapshots containing such objects. The warning message was also extended to highlight that this is a mistake in the project code that will lead to unexpected behavior. Always use the method Object.DontDestroyOnLoad() to move scene objects (GameObjects and their components) into the DontDestroyOnLoad scene to properly keep them from being unloaded as the HideFlag.DontUnloadUnusedAsset will be ignored for non-asset.

1.1.11

07 Feb 04:01

Choose a tag to compare

[1.1.11] - 2026-02-06

Fixed

  • Fixed an occasional deadlock when switching the table modes between Allocated, Allocated and Resident and Resident.

Changed

  • Adjusted the search logic for the Memory Map table to not just filter by the content of the Name column but now also by the Address or Type and deals properly with nested table entries in the same way search works in the other tables.

1.1.10

01 Feb 05:10

Choose a tag to compare

[1.1.10] - 2026-01-30

Added

  • Added a "Shortest Path To Root" tab to the References section. This shows the shortest path to what roots every object or (referenced) native allocation to memory. Note that it shows only one path and that it is only guaranteed to be the shortest path within all paths to the strongest binding type of root. There can be multiple paths and even shorter ones in weaker binding root types, none of which are currently shown in this list. While there are more insights to be gained by inspecting all paths to root, this additional view should provide a quick starting point, particularly for long and complex reference chains where the Referenced By tab might never drill deep enough to get to a root. For Unity Objects where the shortest path for their Managed Shell ends in a different root than the native object, both paths are shown.
  • Added entries for the "Impact" any object has on the overall memory usage to the new Impact section of their Selection Details. This Impact includes their own memory usage as well as the proportional amount of the Impact attributed to objects and allocations that the object references. That is to say, if it is the only one referencing another object, the Impact of the other object is added to its impact in full; if others reference that other object, the Impact of the other object is distributed among all those referencing it. To ensure no byte gets lost due to rounding issues, the references to a shared object that were found first might get 1 B more added to their Impact than the references found later. When a Unity Object is selected that consists of both a native and a mangaged object, the Impact for each is shown separately, as it might differ or fully include the other. For example, if the Managed Shell of a MonoBehaviour is rooted to a static field, the Impact of the Managed Shell is shared with the native object and all managed reference, but the Impact of the native object's Impact is not attributed to the managed shell or the static field root, as it exclusively bound to the lifetime of its GameObject and Scene. In case of an Asset however, the native object's Impact would be shared with the static reference chain, as that chain will keep it from being unloaded by Resources.UnloadUnusedAssets().
  • Added an option to the Memory Profiler's preferences to disable the calculations needed for the above mentione Impact and Root determinations. While we did our best to consider all possibilities, there might be edge cases where these calculations cause issues while opening a snapshot, and the capture opening times might increase due to these calculations. You can therefore disable the calculations, but please report any errors you may encounter, so that we can fix them.

Fixed

  • Snapshot panel and details panel size and toggle state are now persisting.
  • Fixed a few smaller managed memory leaks in the UI.
  • Fixed Memory Usage module UI in Profiler Window in light mode having too dark a background color.
  • Fixed a broken profiler target selection dropdown on Unity 6000.5 with a nullpointer exception thrown during EditorStyles.toolbarDropDown inside PlayerConnectionCompatibilityHelper.GetPlayerDisplayName.
  • Fixed a native memory leak in the ManagedData constructor and when loading the dumped managed heap bytes out of a snapshot file.
  • Fixed the toggle labeled "Show Address in Call Stacks" so it does what it says, instead of the opposite.
  • Fixed the Selection Details for Unity Objects without a Managed Shell claiming the object to be "Referenced By: 0" where they totally had native references.

Changed

  • Improved performance for table sorting.
  • Unrooted memory is now broken down by allocation for snapshots taken from 6000.3 or newer even if the Editor is not in internal mode and the snapshot was not taken from a Player or Editor started with the command line option -enable-memoryprofiler-callstacks. With that option these allocations are grouped by their Memory Label.

1.1.9

07 Sep 17:50

Choose a tag to compare

[1.1.9] - 2025-09-05

Changed

  • Renamed Unknown to Unrooted as that more properly describes these allocations. Further, if a snapshot is taken from a Player or Editor is started with the commandline option -enable-memoryprofiler-callstacks (only available for 6000.3 or newer, for older versions Unity's source code would have to have been compiled with the precompiler directive ENABLE_STACKS_ON_ALL_ALLOCS) AND when doing so on a Unity version where the bug (UUM-116049) has been fixed, AND if the Unity Editor opening the snapshot is in internal mode, then the Unrooted allocations are split out into the Memory Labels which had been used for their allocation. Note: this is predominantly a debug tool for Unity Engine developers to fix their unrooted allocations.

1.1.8

14 Aug 23:21

Choose a tag to compare

[1.1.8] - 2025-08-13

Added

  • Adde an option to the Memory Profiler preferences to consider all pointer sized fields as potential pointers to native allocations. By default such fields are only considered when they are found on types in the Unity.Entites namespace, which helps analyse DOTS and Entities usage of unmanaged memory. Turning this option on can improve reference discovery for native memory, but can also produce false positives and slow down snapshot opening times. If you want to make your own usages of memory allocated vie UnsafeUtility easier, it is recommended to instead store references to it as actual pointers or IntPtrs.

Fixed

  • Compilation issues on Unity versions between 6000.0.0a1 and 6000.0.52f1.
  • UI issues due to too long paths and resulting failures to import the files.
  • Fixed potential duplicates in Unity Objects table not finding potential duplicates if their resident memory size differs (PROFB-367).
  • Fixed discrepancies in the resident amounts given for native and managed memory on the Summary page compared to the All Of Memmory Page when inspecting captures from IL2CPP. The resident amounts used for the VM memory where not properly reattributed.

Changed

  • Improved the analysis of managed data to find DOTS/Entites related references to unmanaged memory when that memory is referenced from types in the Unity.Entites namespace.
  • Switched on resident memory breakdown for the managed memory section on the Summary page.

1.1.7

07 Aug 01:50

Choose a tag to compare

[1.1.7] - 2025-08-06

Added

  • Added a UTC timestamp, as well as the current frame count, Time.realtimeSinceStartupAsDouble and (when capturing a snapshot from a Unity Editor) EditorApplication.timeSinceStartup to the default snapshot metadata injector (which is included in builds made with this version of the package included, unless a Unity.MemoryProfiler.MetadataCollect instance is present). This should make correlating snapshots to timing captures easier. The time reflects the start of the capture taking process and the metadata can be observed by hovering the snapshot in the list of captures (while not in Play Mode).

Fixed

  • Fixed loading of a capture with an invalid native root allocation reference from a graphics resource (PROFB-359).
  • Fixed an issue where the list of snapshots would jump to the wrong position after opening one.
  • Fixed issue where non-Latin characters in a project's Product Name would result in an incorrectly named memory snapshot file (PROFB-346).
  • Fixed case where it was possible to rename a snapshot to an empty string.
  • Fixed SnapshotDataService leaking when opening and closing the Memory Profiler window.
  • Fixed repeated references via multiple fields on the same object leading to a status of "Bug! Liveness Reason Unknown" on the referenced object (PROFB-351).
  • Fixed an issue where managed references to smaller native alloctions (<16B), e.g. for NativeArrays, would not be found and listed in the References To or Managed Fields list, instead refering to a reference to a Native Region (PROFB-353).
  • Reattributed PlayStation 5's GPU memory from Native to Graphics in the Summary view and All Of Memory table.
  • Fixed inclusion of allocated GPU memory on the PlayStation 5 on the All Of Memory table under Native > Unity Subsystem > Unknown. Instead, it is now shown under Graphics (Estimated) and/or Untracked > Graphics.
  • Fixed icon for captures made on Apple Vision Pro.

Changed

  • Improved the handling of exceptions thrown during a snapshot opening process so that previously opened snapshots apear properly as closed int UI and a mismatch between UI and loading state do not lead to follow on-exceptions.
  • Improved the documentation for Unity.MemoryProfiler.MetadataCollect.
  • Added GCHandles allocated for managed objects to the list of references if they are not associated with a native object (where that native object would then be placed in the references list).
  • Clarified that the option to break down reserved memory only affects reserved native memory to avoid confusion (PROFB-369).

1.1.6

24 Mar 15:09

Choose a tag to compare

[1.1.6] - 2025-03-24

Added

  • Added info on which scripting backend a snapshot was captured from to the tooltip of the snapshot's entry in the snapshot list.

Fixed

  • Fixed calculation leading to an attempt to allocate negatively sized NativeHashmap<SourceIndex,UnsafeList> backing memory for large connection maps for projects with Collections package versions <2.1.

1.1.5

14 Feb 16:08

Choose a tag to compare

[1.1.5] - 2025-02-14

Added

  • Managed fields referencing native allocations are now parsed as references. References show up in the References To tab for the managed objects holding the references, as well as in the Referenced By tab for native allocations under Native > Unity Subsystems > UnsafeUtility in the All Of Memory table. Note that this is not an exhaustive list of all references to these allocations, as stack variables could reference them as well but are not part of the snapshot. Thus, a native allocation without references is not necessarily leaked.
  • Native Allocations (e.g. those listed in Native > Unity Subsystems > UnsafeUtility in the All Of Memory table) are now named based on the field and object information of the first managed reference to them, making them easier to parse than address values and stand out from the list as having reference information.

Fixed

  • The Boehm GC treats any pointer sized field as potential managed pointer. So far the Memory Profiler only examined reference fields to find referenced objects (outside of those directly held by static fields or GCHandles). The Memory Profiler does not yet follow this logic as it would end up finding invalid Managed objects, but it now finds references from unsafe pointer fields to Managed Objects that are also held by a GC Handle.
  • The Managed Fields table now shows any pointer sized fields that might be holding managed objects as referencing these managed objects (Note: if they are not referenced otherwise, they won't sho up in the other tables).

Changed

  • The References To table now shows field information for references held by managed fields

1.1.4

07 Feb 15:08

Choose a tag to compare

[1.1.4] - 2025-02-07

Added

Fixed

  • Fixed native sizes getting trimmed down for Native Objects captured in snapshots from Unity versions before 2022.2, when their Native Allocations did not fall within reported memory regions. This trimming falsely assumed proper memory region reporting.

Changed

  • Improved object size information in selection details view; now lists Graphics memory.
  • Showing Graphics sizes in All Of Memory table for snapshots of Unity versions prior to 2022.2 and adjusting native sizes to rely on Profiler.GetRuntimeMemorySizeLong data for these captures.
  • Switched Unity Objects table and summary to use the explicitly reported graphics sizes for all snapshots taken from 2022.2 or newer, instead of 2023.1 or newer. 2022.2 and 2022.3 had this data but was displaying graphics sizes based on calculations using Profiler.GetRuntimeMemorySizeLong data. Earlier 2022.2 and 2022.3 versions had different bugs in the reported values for the explicitly reported graphics sizes so snapshots taken between version 2022.2.0a8 and 2022.3.7f1 might have shown different graphics and native sizes on the Unity Objects table vs what the All Of Memory table was showing for them. Small discrepancies in native memory reporting, that also might have had an influence on the graphics and native sizes shown in the two tables have been fixed in 2022.3.43f1 so for the most reliable data, use that or a newer version for profiling.
  • Grouping all Graphics > <No Name> entries into one. If you have these, please update to at least Unity patch version: 2022.3.44f1 or 6000.0.0b16
  • Improved the documentation for MetadataCollect API.
  • Opening the Memory Profiler window no longer starts indexing the assets search provider by default, leading to potential crashes.

1.1.3

31 Oct 13:07

Choose a tag to compare

[1.1.3] - 2024-10-31

Fixed

  • Static field references were only listed in the References view if they directly referenced the selected item, i.e. a static field referencing an object B that referenced the selected object A would only show object B, but not the static reference to B.
  • Fixed an ArgumentOutOfRangeException when opening the Unity Objects page in compare mode with 2 snapshots that were captured without capturing Native Objects.
  • Fixed a NullReferenceException when opening the All of Memory page in compare mode with 2 snapshots that were captured without capturing Native Objects but with Native Allocations, both from the same session.
  • Fixed the ID numbers for Graphics objects on the All of Memory page in compare mode with 2 snapshots that where both captured from the same session to be their Native Object's instance ID.

Changed

  • Adjusted package dependency on Unity.Collections down to 1.2 to retain compatibility to 2022.3 without forcing to update Unity.Collections to 2.1 or newer.