释放mac上的inactive memory

使用mac的朋友肯定见过下图这个Activity Monitor


系统把内存分成了4块:

Free - 顾名思义,就是可用内存

Wired - 系统(包括OS X内核)占用的内存

Active - 现在正在使用的内存

Inactive - 你刚刚退出的程序仍然占有的内存,实际上mac保留了你之前退出的程序的一些信息在RAM里面,这样当你再次打开这个程序的时候,加载会快很多。

很显然,当Free内存不够的时候,打Wired的主意很难,当然可以关掉一些软件以减小Active memory,但最有效的方法是释放inactive memory,大不了就是下次再打开之前打开过的程序的时候稍微慢一点呗。

释放inactive memory非常简单,mac已经帮你封装在purge命令里了。

打开Terminal,输入purge,敲下回车,就这么简单,再来看内存分配。


Inactive memory从1G降到了不到300M,Active memory也被释放了40%



### LVGL按钮在INACTIVE状态下自锁功能的实现 为了实现在LVGL框架中按钮处于INACTIVE状态下的自锁功能,可以采取以下方法: #### 定义按钮的状态变量 创建一个全局或局部布尔型变量来跟踪按钮是否被锁定。当设置为`true`时,表示按钮已被锁定;反之则未锁定。 ```c static bool btn_locked = false; ``` #### 修改按钮事件回调函数 修改按钮点击事件处理器,在其中加入逻辑判断当前按钮是否已锁定。如果已经锁定,则忽略此次点击操作并返回;如果没有锁定,则执行相应动作并将按钮置为锁定状态。 ```c void button_event_cb(lv_obj_t * obj, lv_event_t event) { if (event == LV_EVENT_CLICKED && !btn_locked) { /* 执行按钮按下后的具体业务逻辑 */ // 将按钮设为不可用(INACTIVE),模拟锁定效果 lv_btn_set_state(obj, LV_BTN_STATE_INA); // 设置标志位表明该按钮已经被锁定 btn_locked = true; // 可选:启动定时器或其他机制用于解锁按钮 } } ``` #### 使用计时器自动解除锁定 可以通过设定一定时间间隔后恢复按钮可用性的方案来达到限时自锁的效果。利用lvgl内置的延迟调用接口`lv_timer_create()`注册一个一次性任务,在指定毫秒数过后重置上述定义的状态标记以及更新UI上的表现形式。 ```c // 延迟一段时间后再解锁按钮 lv_timer_create(unlock_button_task, DELAY_MS_TO_UNLOCK, NULL); ... static void unlock_button_task(void* param) { // 清除之前记录下来的锁定标识符 btn_locked = false; // 更新界面上对应控件样式使其恢复正常可交互模式 lv_btn_set_state(button_object_ref, LV_BTN_STATE_REL); } ``` 通过以上方式能够有效地控制LVGL中的按钮组件在其变为INA(即inactive)期间保持自锁特性,并且可以根据实际需求灵活调整具体的触发条件和持续周期[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值