How to deleted the memory increase by anim running?

In my project I create anim sgAnimatorScr1 by calling funtion lv_anim_create, 39 pictures are displayed during the anim running. The parameter repeat is set to 1, parameter ready_cb is NULL since I want to keep the anim displaying until special message is received. The anim sgAnimatorScr1 will be deleted by calling function lv_anim_del and others will be displayed on the screen. The 39 pictures are stored in a variables , LV_IMG_DECLARE is used for these C files of the pictures.

I notice the memory increases about 800KB after the anim is triggered and don’t decrease when the anim is stopped. Why? I see the log and find lv_anim_del is called in the log. Why dose the memory increase? Why can’t the memory be deleted by lv_anim_del? How to do if I want the memory decrease after anim is stopped and no other impact to the next display on the screen.

static lv_obj_t *sgWidgetScr1[WIDGETS_SCREEN1_MAX] = {NULL};

void clear_screen1_animation()
{
if (NULL != sgAnimatorScr1.var) {
bool ret = lv_anim_del(sgAnimatorScr1.var, NULL);
sgAnimatorScr1.var = NULL;
}

if (NULL != sgWidgetScr1[SCREEN1_IMG]) {
    lv_obj_del(sgWidgetScr1[SCREEN1_IMG]);
    sgWidgetScr1[SCREEN1_IMG] = NULL;
}

}

void display_booting_animation(void)
{

// clear unused widgits  and anim in screen1
clear_screen1_for(DISPLAY_BOOTING);

lv_page_set_scrl_fit2(sgPage1, LV_FIT_FLOOD, LV_FIT_FLOOD);

if (NULL == sgWidgetScr1[SCREEN1_IMG]) {
    sgWidgetScr1[SCREEN1_IMG] = lv_img_create(sgPage1, NULL);
}

/*Create an animation. It will call `booting_animator` periodically to set a new image source*/
sgAnimatorScr1.var = sgWidgetScr1[SCREEN1_IMG];
sgAnimatorScr1.start = 0;
sgAnimatorScr1.end = BOOT_ANIM_PIC_NUM;
sgAnimatorScr1.exec_cb = (lv_anim_exec_xcb_t)booting_animator;
sgAnimatorScr1.path_cb = lv_anim_path_linear;
sgAnimatorScr1.ready_cb = NULL;
sgAnimatorScr1.act_time = 0;
sgAnimatorScr1.time = 2000;   /* Totol display time of all images */
sgAnimatorScr1.playback = 0;                             /*Play backward too when ready*/
sgAnimatorScr1.playback_pause = 0;
sgAnimatorScr1.repeat = 1;                                  /*Animate in loop*/
sgAnimatorScr1.repeat_pause = 0;
lv_anim_create(&sgAnimatorScr1);

sgIsBootAniInDisplay = true;
create_booting_ani_timeout_task(); // when timeout, clear_screen1_animation will be called to release  sgWidgetScr1[SCREEN1_IMG]/sgAnimatorScr1.var

}

Please show a code snippet.

Thank you, I add the code to the above description.