---
title: Memory heaps
framework: metal
role: collectionGroup
role_heading: API Collection
path: metal/memory-heaps
---

# Memory heaps

Take control of your app’s GPU memory management by creating a large memory allocation for various buffers, textures, and other resources.

## Overview

Overview Use an MTLHeap to quickly create and destroy GPU resources. Heaps can also help your apps save memory by aliasing portions of it in multiple places. Create a heap by calling an MTLDevice instance’s makeHeap(descriptor:) method. note: Metal only synchronizes resources that you create from a Metal heap and that have the hazardTrackingMode property set to MTLHazardTrackingMode.tracked.

## Topics

### Resource memory allocation and management

- [Using argument buffers with resource heaps](metal/using-argument-buffers-with-resource-heaps.md)
- [Implementing a multistage image filter using heaps and events](metal/implementing-a-multistage-image-filter-using-heaps-and-events.md)
- [Implementing a multistage image filter using heaps and fences](metal/implementing-a-multistage-image-filter-using-heaps-and-fences.md)
- [MTLHeap](metal/mtlheap.md)
- [MTLHeapDescriptor](metal/mtlheapdescriptor.md)
- [MTLHeapType](metal/mtlheaptype.md)
- [MTLSizeAndAlign](metal/mtlsizeandalign.md)

## See Also

### Resources

- [Resource fundamentals](metal/resource-fundamentals.md)
- [Buffers](metal/buffers.md)
- [Textures](metal/textures.md)
- [Resource loading](metal/resource-loading.md)
- [Resource synchronization](metal/resource-synchronization.md)
