unity 内存优化,调整mono的gc频率,起到内存优化

1:下载对应unity版本的mono
2:查找mono文件mono-unity\mono\mini.c进行如下修改

可以在代码的#include之后加上:此段代码导出修改gc频率的方法个变量

typedef unsigned long GC_val;
extern GC_val GC_divisor;
GC_word GetGCDivisor();
int SetGCDivisor(GC_val divisor);

查找文件里面的mono_add_internal_call使用的地方在下面增加C#掉C的方法

	mono_add_internal_call ("MonoGC::GetGCDivisor", 
				GetGCDivisor);
	mono_add_internal_call ("MonoGC::SetGCDivisor", 
				SetGCDivisor);

增加对应的方法

GC_word GetGCDivisor()
{
    return GC_divisor;
}

int SetGCDivisor(GC_word divisor)
{
    if (divisor > 0 && divisor <= 64)
    {
        GC_divisor= divisor;
        return 1;
    }
    return 0;
}

3:在unity里面增加C#文件

public class MonoGC
{
#if UNITY_ANDROID && !UNITY_EDITOR
    [MethodImplAttribute(MethodImplOptions.InternalCall)]
    public extern static uint GetGCDivisor();

    [MethodImplAttribute(MethodImplOptions.InternalCall)]
    public extern static int SetGCDivisor(uint divisor);

    private static readonly string TAG = "MonoGC";
#endif

    public static uint GetMonoGCDivisor()
    {
#if UNITY_ANDROID && !UNITY_EDITOR
        try
        {
                MethodInfo mi = typeof(MonoGC).GetMethod("GetGCDivisor");
                if (mi != null)
                {
                    return GetGCDivisor();
                }
            }
        }
        catch (Exception e)
        {
        }
#endif
        return 0;
    }

    public static int SetMonoGCDivisor(uint divisor)
    {
#if UNITY_ANDROID && !UNITY_EDITOR
        try
        {
                MethodInfo mi = typeof(MonoGC).GetMethod("SetGCDivisor");
                if (mi != null)
                {
                    return SetGCDivisor(divisor);
                }
        }
        catch (Exception e)
        {

        }
#endif
        return 0;
    }

}

**最后只需要在游戏启动时候对用不同的手机设置的合理的gc频率值就可以了,设置的数值越大频率越高,

注意过高的频率可能会引起间隔卡顿感,所有请合理的设置值,推荐值是16,unity引擎的默认值是3

**

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值