I would say that if you have several iterations of your action loop that result in 0 bytes allocated and still living then you are good on memory management and have no leaks.
The increases you are seeing (from a few bytes to a few kilobytes) are most likely from the OS or background Apple code doing things to try to manage the tasks you are doing. One easy example is if you bring up the keyboard for the first time Apple allocats memory for it that is never released, so that iteration you will see "leaked" memory that you didn't create. Everything you do has background code that Apple runs and you can't define what it wants to do with memory. It could be cacheing specific things that are done often so that next time it runs faster. The whole Apple philosophy is smooth running apps so the user experience is the best it can be. What the OS does in the background to make that happen can be intermittent and can cause unreleased memory.
Check the heap-snapshots for what objects were allocated and not released. If you can track those objects to your code then fix it, if you can't then it's likely an OS allocation that either can or cannot be avoided. Like I said a moment ago, if you are getting a lot of 0 increases then I would not worry about it because of these intermittent OS increases.