Edit online

性能优化——内存优化

  1. 显示内存优化

    显存占用 = 分辨率 × 色深字节数

    1. 显示内存占用
    格式 双 framebuffer 屏幕是否旋转 内存占用
    1024 600 ARGB8888 1024x600x4x2 = 4.8MB
    1024 600 RGB565 1024x600x2x2 = 2.4MB
    1024 600 ARGB8888 1024x600x4x2 +1024x600x4 = 7.2MB
    1024 600 RGB565 1024x600x2x2 + 1024x600x2= 3.6 MB
    配置策略:
    • 降低色深:非高保真场景 framebuffer 选用 rgb565。

      详情可查看配置 Framebuffer

    • 屏幕方向:不开启旋转或者选择竖屏竖用,横屏横用的显示屏。
  2. 优化解码内存占用
    • 如果不是必须包含透明度,使用 JPEG 图片替换 PNG 图片。。
      格式 解码内存占用
      1024 600 PNG 1024x600x4 = 2.4 MB
      1024 600 JPEG 1024x600x2 = 1.2 MB
    • 当内存比较紧张时,需要对图片缓存的释放进行控制。

      LVGL V8 图片缓存释放接口:

      // 释放对象 img_obj 的图片缓存
      lv_img_cache_invalidate_src(lv_img_get_src(img_obj));
      
      // 释放所有的图片缓存,在场景切换时,确定不需要已有的图片缓存可以这么调用
      lv_img_cache_invalidate_src(NULL);
      LVGL V9 图片缓存释放接口:
      // 释放对象 img_obj 的图片缓存
      lv_image_cache_drop(lv_image_get_src(img_obj));
      
      // 释放所有的图片缓存,在场景切换时,确定不需要已有的图片缓存可以这么调用
      lv_image_cache_drop(NULL);