Skip to main content

My device is running out of memory. How can I optimize?

If you encounter memory issues:

  1. Reduce log verbosity in production builds:

    CONFIG_LOG_DEFAULT_LEVEL_WARN=y
  2. Enable PSRAM if your chip supports it:

    CONFIG_SPIRAM_SUPPORT=y
  3. Disable unused features: Turn off unnecessary RainMaker features:

    /* Don't enable features you don't need */
    /* esp_rmaker_schedule_enable();
    * esp_rmaker_scenes_enable(); */
  4. Monitor memory usage:

    ESP_LOGI(TAG, "Free heap: %d", esp_get_free_heap_size());

    Or use the mem-dump serial console command when the console is enabled:

    >> mem-dump

    Description Internal SPIRAM
    Current Free Memory 136572 0
    Largest Free Block 114688 0
    Min. Ever Free Size 110896 0

For comprehensive memory optimization (static RAM, heap, lwIP, Wi-Fi buffers, Mbed TLS, PSRAM, IRAM), see the ESP-IDF Minimizing RAM Usage guide. Use idf.py size and idf.py size-components to analyze memory, and esp_get_free_heap_size() / esp_get_minimum_free_heap_size() for runtime heap monitoring.