madvise( start, size, MADV_DONTNEED );
start must be page-aligned. size is in bytes, but if you take one byte of a page, you take the whole thing, so clip as appropriate.this informs the kernel you're done with some part of the memory. mapped things will be re-read and others will act as if zero'd when later accessed. both can be safely dropped without taking space in the swap, instead being newly created when next needed.