void OnHeapReceivedSaveOnly(string path, bool captureResult) { EditorUtility.DisplayProgressBar(HeGlobals.k_Title, "Saving memory...", 0.5f); try { var args = new MemorySnapshotProcessingArgs(); args.source = UnityEditor.Profiling.Memory.Experimental.PackedMemorySnapshot.Load(path); var heap = PackedMemorySnapshot.FromMemoryProfiler(args); heap.SaveToFile(autoSavePath); HeMruFiles.AddPath(autoSavePath); ShowNotification(new GUIContent(string.Format("Memory snapshot saved as\n'{0}'", autoSavePath))); } catch { m_CloseDueToError = true; throw; } finally { m_IsCapturing = false; m_Repaint = true; EditorUtility.ClearProgressBar(); } }
void OnHeapReceivedSaveOnly(UnityEditor.MemoryProfiler.PackedMemorySnapshot snapshot) { UnityEditor.MemoryProfiler.MemorySnapshot.OnSnapshotReceived -= OnHeapReceivedSaveOnly; EditorUtility.DisplayProgressBar(HeGlobals.k_Title, "Saving memory...", 0.5f); try { var args = new MemorySnapshotProcessingArgs(); args.source = snapshot; args.excludeNativeFromConnections = excludeNativeFromConnections; var heap = PackedMemorySnapshot.FromMemoryProfiler(args); heap.SaveToFile(autoSavePath); HeMruFiles.AddPath(autoSavePath); ShowNotification(new GUIContent(string.Format("Memory snapshot saved as\n'{0}'", autoSavePath))); } catch { m_CloseDueToError = true; throw; } finally { m_IsCapturing = false; m_Repaint = true; EditorUtility.ClearProgressBar(); } }
void OnSnapshotReceived(string path, bool captureResult) { var args = new MemorySnapshotProcessingArgs(); args.source = UnityEditor.Profiling.Memory.Experimental.PackedMemorySnapshot.Load(path); m_snapshot = PackedMemorySnapshot.FromMemoryProfiler(args); }
void OnSnapshotReceived(UnityEditor.MemoryProfiler.PackedMemorySnapshot snapshot) { UnityEditor.MemoryProfiler.MemorySnapshot.OnSnapshotReceived -= OnSnapshotReceived; var args = new MemorySnapshotProcessingArgs(); args.source = snapshot; args.excludeNativeFromConnections = false; m_snapshot = PackedMemorySnapshot.FromMemoryProfiler(args); }
/// <summary> /// Converts an Unity PackedMemorySnapshot to our own format. /// </summary> public static PackedMemorySnapshot FromMemoryProfiler(MemorySnapshotProcessingArgs args) { var source = args.source; var value = new PackedMemorySnapshot(); try { VerifyMemoryProfilerSnapshot(source); value.busyString = "Loading Header"; value.header = PackedMemorySnapshotHeader.FromMemoryProfiler(); value.busyString = string.Format("Loading {0} Native Types", source.nativeTypes.Length); value.nativeTypes = PackedNativeType.FromMemoryProfiler(source.nativeTypes); value.busyString = string.Format("Loading {0} Native Objects", source.nativeObjects.Length); value.nativeObjects = PackedNativeUnityEngineObject.FromMemoryProfiler(source.nativeObjects); value.busyString = string.Format("Loading {0} GC Handles", source.gcHandles.Length); value.gcHandles = PackedGCHandle.FromMemoryProfiler(source.gcHandles); value.busyString = string.Format("Loading {0} Object Connections", source.connections.Length); if (args.excludeNativeFromConnections) { value.connections = ConnectionsFromMemoryProfilerWithoutNativeHACK(value, source); } else { value.connections = PackedConnection.FromMemoryProfiler(source.connections); } value.busyString = string.Format("Loading {0} Managed Heap Sections", source.managedHeapSections.Length); value.managedHeapSections = PackedMemorySection.FromMemoryProfiler(source.managedHeapSections); value.busyString = string.Format("Loading {0} Managed Types", source.typeDescriptions.Length); value.managedTypes = PackedManagedType.FromMemoryProfiler(source.typeDescriptions); value.busyString = "Loading VM Information"; value.virtualMachineInformation = PackedVirtualMachineInformation.FromMemoryProfiler(source.virtualMachineInformation); } catch (System.Exception e) { Debug.LogException(e); value = null; throw; } return(value); }
void ReceiveHeapThreaded(object userData) { var args = new MemorySnapshotProcessingArgs(); args.source = userData as UnityEditor.Profiling.Memory.Experimental.PackedMemorySnapshot; try { m_Heap = PackedMemorySnapshot.FromMemoryProfiler(args); m_Heap.Initialize(); } catch { m_CloseDueToError = true; throw; } }
void ReceiveHeapThreaded(object userData) { var args = new MemorySnapshotProcessingArgs(); args.source = userData as UnityEditor.MemoryProfiler.PackedMemorySnapshot; args.excludeNativeFromConnections = excludeNativeFromConnections; try { m_Heap = PackedMemorySnapshot.FromMemoryProfiler(args); m_Heap.Initialize(); } catch { m_CloseDueToError = true; throw; } }