Google chrome Chrome内存限制

Google chrome Chrome内存限制,google-chrome,Google Chrome,网络(包括本网站)上有关于Chrome内存限制的声明,但我发现这些声明与其他问题有关。window.performance.memory报告了793MB的堆限制,这似乎也是B.S.,除非我遗漏了什么,或者堆中没有存储很多东西。显然有32位地址空间的限制(Linux除外),所以这是目前的上限,直到Chrome赶上IE和FF,达到64位 有人会说,正如我在这个网站和其他网站上看到的,“你为什么需要这么多内存”或者“你为什么不把东西存储在服务器上”或者“浏览器不是做内存密集型工作的合适地方。”平和。我

网络(包括本网站)上有关于Chrome内存限制的声明,但我发现这些声明与其他问题有关。window.performance.memory报告了793MB的堆限制,这似乎也是B.S.,除非我遗漏了什么,或者堆中没有存储很多东西。显然有32位地址空间的限制(Linux除外),所以这是目前的上限,直到Chrome赶上IE和FF,达到64位

有人会说,正如我在这个网站和其他网站上看到的,“你为什么需要这么多内存”或者“你为什么不把东西存储在服务器上”或者“浏览器不是做内存密集型工作的合适地方。”平和。我听到了,让我们同意不同意

无论如何。我构建了一个哑测试夹具(链接到下面的fiddle),以查看在Chrome变得不稳定之前可以分配多少内存。答案似乎是“大约2G”。你可以分配更多——就像3G一样——释放它,分配它,释放它,分配它,释放它;但浏览器最终会生病。在3G被释放后,它会在稍后的某个时间随机地“啪”一声出现在你身上

因此,要么是它在自己身上撒尿(一个bug),要么某个例程正在使用地址的顶部位作为标志(例如,像Visual Basic的字符串存储分配器),因此进入“负”地址空间会破坏它的稳定性。有没有人对铬的内部结构有足够的了解来证实后一种理论?如果是这样的话,这将把高水位线定为(2^31-sum(其他材料包括铬合金内部构件)),这将尽可能接近最终答案

链接到小提琴这里:

//分配大量内存并填充内容
函数testalloc(兆字节){
var foo=[];
对于(变量i=0;i
// allocate lots of memory and fill it with stuff
function testalloc(megabytes) {
    var foo = [];
    for (var i = 0; i < megabytes; i++) {
        foo[i] = new Uint8Array(1000000);
        for (var ii = 0; ii < 1000000; ii++) {
            foo[i][ii] = (ii + i) % 256 ;
        }
    }
    function bletch(i, ii) {
        return foo[i][ii];
    }
    return bletch;
}