When 4D allocates memory it simply requests memory from the operating systems memory manager. When it is done with the memory it is simply released back to the operating system's memory manager. This memory is normally allocated as "Inactive" memory on a Mac OS X system.
Inactive memory is supposed to be reused as Free memory but sometimes the memory manager swaps memory out to disk instead of reusing the Inactive memory. Swapping memory out to disk is known as Paging out the memory; this can cause performance slow downs. For more information see: https://support.apple.com/kb/HT1342
If you install the xCode developer tools and enable the CHUD tools package during installation you'll get a new command, "purge" that can be executed via Launch External Process. The purge MAN page says:
NAME purge -- force disk cache to be purged (flushed and emptied) SYNOPSIS purge DESCRIPTION Purge can be used to approximate initial boot conditions with a cold disk buffer cache for performance analysis. It does not affect anonymous mem- ory that has been allocated through malloc, vm_allocate, etc. |
Using this command via LUNCH EXTERNAL PROCESS can be done easily with the following snippet of code:
C_TEXT($In;$Out) LAUNCH EXTERNAL PROCESS("purge";$In;$Out) |
One location you may want to consider placing this code is in the ON BACKUP SHUTDOWN method to clear the inactive memory after each backup.