Loading data only when needed.

Using two buffers to reduce processing conflicts.

Memory accessible by cooperating processing units.

Requested data found in cache.

Loading required data immediately.

Preallocated collection of memory blocks.

Large memory accessible by GPU threads.

Requested data absent from cache.

Dividing data or memory into fixed-size pages.

Reusable collection of initialized objects.