代码拉取完成,页面将自动刷新
同步操作将从 focus-creative-games/hybridclr 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
huatuo是运行时级别的实现,因为热更新的脚本,除了执行代码是以解释模式执行,其他方式跟AOT部分的类型是完全相同的,包括占用内存。因此下面只介绍il2cpp中class类型和ValueType类型对象的内存大小情况。
对于值类型,对象大小并不是简单为所有成员所占大小,必须考虑到内存对齐。对于引用类型,多了额外了对象头(16字节),并且内存对齐为8字节。对于array类型,则更为复杂。
如熟知, byte占1字节,int占4字节,其他不赘述。
在未指定ExplicitLayout的情况下,根据字段大小及内存对齐规则计算出总大小,与c++的struct计算规则相似。这里不详细阐述,直接举例吧
struct V1
{
public byte a1;
}
struct V2
{
public byte a1;
public int a2;
}
struct V3
{
public int a1;
public int a2;
public object a3;
public byte a4;
}
以上对象的对象大小为:
与 ValueType相似,但多了对象头的16字节,并且强制内存对齐为8字节。
示例:
class C1
{
public byte a1;
}
class C2
{
public byte a1;
public int a2;
}
class C3
{
public int a1;
public int a2;
public object a3;
public byte a4;
}
以上对象大小为
lua的计算规则略复杂,参见第三方文章。空table占56字节,每多一个字段至少多占32字节。
ILRuntime的类型除了enum外统一以IlTypeInstance表达,空类型占72字节,每多一个字段至少多用16字节。如果对象中包含引用类型数据,则整体又至少多24字节,并且每多一个object字段多8字节。
类型 | Xlua | ILRuntime | huatuo |
---|---|---|---|
V1 | 88 | 88 | 1 |
V2 | 120 | 104 | 8 |
V3 | 184 | 168 | 24 |
C1 | 88 | 88 | 24 |
C2 | 120 | 104 | 24 |
C3 | 184 | 168 | 40 |
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。