All Projects → vasyab → Unityheapcrawler

vasyab / Unityheapcrawler

Licence: mit
Reflection based heap shapshot tool for Unity game engine

Programming Languages

csharp
926 projects
reflection
70 projects

Projects that are alternatives of or similar to Unityheapcrawler

Unity Animator Helpers
A micro-framework for changing Unity 3D's Animator parameters with ScriptableObject(s). Designed to make going from custom scripts to Animator parameters easy. Works with 2D or 3D projects.
Stars: ✭ 89 (-2.2%)
Mutual labels:  unity, unity3d
Neolowman
Yet another low-poly man
Stars: ✭ 88 (-3.3%)
Mutual labels:  unity, unity3d
Unity Azure Pipelines Tasks
Azure DevOps extension adding tools to build and deploy Unity 3D projects using Azure Pipelines
Stars: ✭ 83 (-8.79%)
Mutual labels:  unity, unity3d
Unityvision Ios
This native plugin enables Unity to take advantage of specific features of Core-ML and Vision Framework on the iOS platform.
Stars: ✭ 85 (-6.59%)
Mutual labels:  unity, unity3d
Iridescence
Iridescence shader
Stars: ✭ 89 (-2.2%)
Mutual labels:  unity, unity3d
Unity Abstract Wire
Unity Abstract Wires Effect
Stars: ✭ 83 (-8.79%)
Mutual labels:  unity, unity3d
Projectfieldwarning
Project: Field Warning is a community-made RTS game centered around lethal regiment and division-scale warfare.
Stars: ✭ 86 (-5.49%)
Mutual labels:  unity, unity3d
Brainiac
Behaviour tree editor for Unity3D
Stars: ✭ 81 (-10.99%)
Mutual labels:  unity, unity3d
Audiopreviewtrack
Instant audio playback (scrubbing) in preview mode of Unity Timeline editor.
Stars: ✭ 88 (-3.3%)
Mutual labels:  unity, unity3d
Unity Colourlovers Importer
Unity editor tool to load colours and palettes directly from COLOURlovers.com
Stars: ✭ 85 (-6.59%)
Mutual labels:  unity, unity3d
Shapes2d
Shapes2D for Unity3D - Make simple art assets quickly in Unity
Stars: ✭ 83 (-8.79%)
Mutual labels:  unity, unity3d
Spriteglow
A sprite glow effect for Unity game engine
Stars: ✭ 1,287 (+1314.29%)
Mutual labels:  unity, unity3d
Temporalreprojectionexample
Temporal reprojection example for Unity
Stars: ✭ 82 (-9.89%)
Mutual labels:  unity, unity3d
Unity3d
Syphon Implementation for Unity3D Pro
Stars: ✭ 90 (-1.1%)
Mutual labels:  unity, unity3d
Vertexanimationjob
Vertex animation with C# Job System and new Mesh API
Stars: ✭ 82 (-9.89%)
Mutual labels:  unity, unity3d
Adamplanereflection
Planar reflection effect from the Adam Interior Environment package.
Stars: ✭ 86 (-5.49%)
Mutual labels:  unity, unity3d
Atlasimage
AtlasImage is a graphic component use SpriteAtlas for uGUI. In addition, add useful sprite selector and border editor to the inspector.
Stars: ✭ 81 (-10.99%)
Mutual labels:  unity, unity3d
1 Character Movement
The first section of the course. You will learn everything required to build a simple movement system in your RPG, creating the core experience. http://gdev.tv/rpggithub
Stars: ✭ 81 (-10.99%)
Mutual labels:  unity, unity3d
Unityandroidhotupdate
(Unity3D热更新) provide a way to hot update Unity app on Android, support code&resources, not need lua js or IL runtime etc..., will not disturb your project development; just loading the new version apk file to achieve.
Stars: ✭ 85 (-6.59%)
Mutual labels:  unity, unity3d
Unityrecyclinglistview
A fast scrolling list component for Unity UI which recycles its child elements
Stars: ✭ 86 (-5.49%)
Mutual labels:  unity, unity3d

Unity Heap Crawler

Customizable heap snapshotting tool for Unity game engine. Can be used to detect memory leaks and analyze high heap usage.

Features

  1. Reflection-based
  2. Results are plain text (see output example)
  3. Human readable results (objects are traversed using BFS)
  4. Differential mode that displays only new objects in all reports (see diffs output)
  5. Enable tracking all root paths for specific types (see output and diffs output)
  6. Little memory overhead - most crawling data is discared after aggregation
  7. Highly customizable - choose between fullness and low memory usage (see documentation)
  8. References to destroyed Unity objects that still take heap space are clearly visible
  9. Unity editor is not needed. You can make a snapshot in build

Motivation

When heap consumption and memory leaks became problems in our project I could not find a tool that could make a mono heap snapshot to help me find those leaks.

  • Builtin Memory Profiler (Profiler window in Editor) is good for analyzing native resources but provides only heap size without any details
  • Unity Memory Profiler does not collect heap objects on mono runtime (even though patch notes state it does in 2017.1). Also, taking snapshot in our project used up 32GB RAM and that is without heap objects.
  • There is no access to mono runtime in Unity so mono HeapShot is not an option

Current solution relies heavily on ideas and memory estimation code from previous reflection based crawlers - my collegue's UnityHeapEx and UnityHeapDump by Zuntatos. I could not use them as is due high memory consumption (all references data won't fit in memory) and low results readability.

Usage

Create HeapSnapshotCollector class instance and call Start() after setting it up. See usage example for options overview. Check out documentation for more detailed options description.

Issues

  • Static fields in generic types and not detected. User can supply those Type objects manually
  • Type memory usage is an estimation and can be slightly off

Authors

Credits

Licence

This code is distributed under the terms and conditions of the MIT license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].