Lua   发布时间:2022-04-12  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么LuaJIT的内存在64位平台上限制为1-2 GB?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在64位平台上,LuaJIT仅允许最多1-2GB的数据(不计算使用malloc分配的对象).这种限制来自何处,为什么这比32位平台还要少?
@H_262_3@解决方法
LuaJIT旨在使用32位指针.在x64平台上,限制来自于使用 mmap和MAP_32BIT标志.

基本上使用此标志限制为前31位,而不是名称建议的前32位.在Linux内核中使用MAP_32BIT查看here以获得1GB限制的概述.

即使你的内容超过1GB,LuaJIT作者也解释了为什么这对性能有害:

总而言之,1GB限制是Linux内核和LuaJIT垃圾收集器的限制.这仅适用于LuaJIT状态内的对象,可以通过使用malloc来克服,malloc将在较低的32位地址空间之外进行分配.此外,它可以在32位模式下在x64上使用X86构建,并可以访问完整的4GB.

查看这些链接以获取更多信息:

> How to get past 1gb memory limit of 64 bit LuaJIT on Linux?
> LuaJIT x64 limited to 31 bit address space,even without MAP_32BIT restrictions?
> LuaJIT strange memory limit
> Digging out the craziest bug you never heard about from 2008: a linux threading regression

大佬总结

以上是大佬教程为你收集整理的为什么LuaJIT的内存在64位平台上限制为1-2 GB?全部内容,希望文章能够帮你解决为什么LuaJIT的内存在64位平台上限制为1-2 GB?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。