Wired memory (also called resident memory) stores kernel code and data structures that must never be paged out to disk. Applications, frameworks, and other user-level software cannot allocate wired memory. However, they can affect how much wired memory exists at any time. For example, an application that creates threads and ports implicitly allocates wired memory for the required kernel resources that are associated with them.
Table 2 lists some of the wired-memory costs for application-generated entities.
Code:
Table 2: Wired memory generated by user-level software
Resource Wired Memory Used by Kernel
-------- ---------------------------
Process 16 kilobytes
Thread blocked in a continuation5 kilobytes; blocked21 kilobytes
Mach port 116 bytes
Mapping 32 bytes
Library 2 kilobytes plus 200 bytes for each task that uses it
Memory region 160 bytes
Note: These measurements may change with each new release of the operating system. They are provided here to give you a rough estimate of the relative cost of system resource usage.
As you can see, every thread, process, and library contributes to the resident footprint of the system. In addition to your application using wired memory, however, the kernel itself requires wired memory for the following entities:
- VM objects
- the virtual memory buffer cache
- I/O buffer caches
- drivers
Wired data structures are also associated with the physical page and map tables used to store virtual-memory mapping information, Both of these entities scale with the amount of available physical memory. Consequently, when you add memory to a system, the amount of wired memory increases even if nothing else changes. When a computer is first booted into the Finder, with no other applications running, wired memory can consume approximately 14 megabytes of a 64 megabyte system and 17 megabytes of a 128 megabyte system.
Wired memory pages are not immediately moved back to the free list when they become invalid. Instead they are garbage collected when the free-page count falls below the threshold that triggers page out events.