There are two memory or RAM issues that you might encounter:
- When your script is being converted from it's Python source into runnable bytecode, if the micro:bit runs out of RAM during this process, you get a MemoryError. This happens as the script runs (when you press reset).
- When your script is running, if you try to create variables or objects or anything else on the heap that exhausts the amount of available RAM, you get a MemoryError.
- Shrinking variable names
- Deleting comments
- Using less whitespace.
The downside here is that this leaves your code difficult to read and debug.
For situation (2) you need to reduce the amount of memory you use while running the code
if you're comfortable with such tools, you could try using a minifier tool to shrink your code before putting on the microbit.