I have previously been told that a sign that some application has a memory leak is that `kernel_task` has a large memory footprint, commonly on the order of gigabytes. If an awry `kext` was causing this memory usage, we would expect to see a discrepancy between the allocated memory and those expected to be allocated, i.e. 

    diff <(kextstat|tr -s ' ' | cut -d ' ' -f 5) <(kextstat| tr -s ' ' | cut -d ' ' -f 6) 

would return something other than the words 'Wired' and 'Name'. 

Whilst writing my thesis, I have noticed that changing a pdf whilst it is open in Preview often causes bad things to happen: occasionally, the memory usage of `kernel_task` can grow to around eight gigabytes, or more. **If I kill preview, it returns to normal, instantly**. So, obviously something is wrong -- and Preview is leaking memory under these conditions.

So, my question is this: if *I* know that a process has leaked ram via a sudden and unexpected increase in the footprint of `kernel_task`, why can't *OS X* know that something has gone wrong. If killing Preview restores my missing `malloc()`'d memory, why *doesn't* Darwin do garbage collection automagically for me? 

Do I have a fundamental misunderstanding of how memory management works? 

**EDIT:** (15/9/15)

Here's a demonstration of what I'm talking about. First of all, I notice high memory usage by `kernel_task` (note Preview is open, just visible at the bottom of Activity Monitor, using 333 MiB of ram): 

[![High kernel memory usage][1]][1]

Following the helpful remarks by Ashley below, let's find out how much each kext is using: 


    $ kextstat | awk 'NR==1{ printf "%10s %s\n", $5, $6; } NR!=1{ printf "%10d %s\n", $5, $6; }' | sort -n
    
    ...
    ...
    ...
       1249280 com.apple.driver.DspFuncLib
       1769472 com.apple.nvidia.driver.NVDAGK100Hal
       2629632 com.apple.nvidia.driver.NVDAResman
       6184960 com.apple.driver.AirPort.Brcm4360
    $

So, not a huge amount. My machine has both discrete and integrated GPUs; their drivers are only using a few MiB of wired ram. On my hunch, let's kill Preview, and look what happens to the memory footprint of `kernel_task`:

[![Killing preview helps things][2]][2] 

Preview's gone, and the memory footprint of the kernel has gone down dramatically. 
There's still no evidence of a change in kext usage: the output of the above command is unchanged.


**Edit**: Bug reported as No. 22701036. I am still waiting for a response from apple. There's nothing particularly interesting if you inspect the process in ActivityMonitor, but maybe I'm missing something. 

  [1]: https://i.sstatic.net/n2L94.png
  [2]: https://i.sstatic.net/IiRgs.png