定时清理内存优化程序性能

有些特定情况下程序需要长时间运行导致内存碎片和垃圾过多,这个时候就需要进行定时对内存进行清理


在程序中的单例脚本或GameManager脚本内添加该代码片段(确保该脚本不会被删除或者回收),下面展示在GameManager脚本下的 代码.

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using UnityEngine;

public class GameManager : MonoBehaviour
{
    public static GameManager instance;
    
    private void Awake()
    {
        instance = this;
    }
    // Start is called before the first frame update
    void Start()
    {
        InvokeRepeating("ClearMemory", 60.0f, 28800.0f);//首次启动1分钟后进行内存清理,之后每隔8小时调用内存清理
    }
    [DllImport("psapi.dll")]
    static extern int EmptyWorkingSet(IntPtr hwProc);
    public void ClearMemory()
    {
        //可以将需要定时释放或删除的功能写在一起

        GC.Collect();
        GC.WaitForPendingFinalizers();
        Process[] processes = Process.GetProcesses();
        foreach (Process process in processes)
        {
            //以下系统进程没有权限,所以跳过,防止出错影响效率。
            if ((process.ProcessName == "System") && (process.ProcessName == "Idle"))
                continue;
            try
            {
                EmptyWorkingSet(process.Handle);
            }
            catch
            {
            }
        }

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值