Esg*_*ger 2 javascript memory jquery artificial-life
我已经建立康威的生命与JavaScript/jQuery的,以在浏览器中运行它这里.Chrome,Firefox和Opera或Safari可以非常快速地执行此操作,因此最好不要使用IE.虽然IE9还可以.在产生新一代生命的同时,我正在存储前几代,以便能够追溯历史.这可以正常工作,直到内存填满,这会使浏览器(选项卡)崩溃.
所以我的问题是:如何检测内存何时填满?我在一个数组中为每一代存储一个数组,形成了几代人的历史.这会占用大量内存,几千代后会崩溃浏览器,具体取决于可用内存.我知道javascript无法检查可用内存量但必须有办法......
我怀疑有办法做到这一点.即使有,也可能是浏览器特定的.不过,我可以建议一种不同的方式.
而不是存储每一代的所有数据,而是每隔一段时间存储一次快照.由于康威的生命游戏是确定性的,您可以轻松地从给定快照重新生成未来的帧.您可能希望保留几帧的缓冲区,以便您可以使倒带变得美观和流畅.
实际上,这实际上并没有解决问题,因为你最终会耗尽空间.但是,如果您存储每个n帧,您的应用程序将持续n更长时间,这可能只是足够长.我建议你对你可以倒回到过去的距离施加一些硬性限制,这样你就可以限制你需要存储的数量.确定将会有多少帧(30 FPS时为10分钟= 18000 frames).然后,除以frames您可以存储多少帧(配置各种Web浏览器来计算出来),这是您应该使用的快照之间的间隔.