Attempts to free up to size bytes of heap memory by discarding non-essential memory SQLite is holding onto, and returns the number of bytes actually freed, which may be less than size.