我到目前为止发现的“隔离”的解释。
例1:1Isolate.html
“隔离器代表V8引擎的一个孤立实例。V8隔离器具有完全独立的状态。来自一个隔离点的对象不能用于其他隔离。当V8初始化时,默认隔离将被隐式创建和输入。嵌入程序可以创建额外的隔离,并在多个线程中并行使用它们。在任何给定的时间,最多一个线程可以输入一个隔离。Locker/Unlocker可以用于同步。”
例2:刚开始
“隔离是一个有自己堆的VM实例。”
好的,我明白了。“隔离”是一个可以单独操作的隔离线程。以下是我的问题。
我的问题可以很容易地总结,“隔离”的作用是什么,以及如何能够拥有自己的堆空间,以及为什么它必须有自己的堆。
如果有人分享一些关于“孤立”的好文件,那将是非常有帮助的。感谢您的阅读。
-把问题弄清楚-我问题的关键是问:是什么让谷歌在V8中实现了隔离?隔离的好处是什么?在V8中使用隔离的好例子是什么?它们同时执行的(分离)是什么?
发布于 2015-03-27 13:43:22
它们是正交的,一个线程可以一次执行多个隔离,而一个隔离只能一次由一个线程执行。当然,一个隔离可以在不同的时间由不同的线程执行,但它可能并不常见。隔离仅是JavaScript VM的一个实例,并且它只有自己的JavaScript堆,正常进程堆仍以正常方式在进程中共享。
标记扫描GC中的非紧致扫描操作可以从另一个线程并发执行。其他GC操作,如压缩扫描、清道夫、标记只能在JS不在隔离中执行时才能执行。
嗯,您不知道地址,而且不可能将它固定在V8 API上。即使您可以获得地址,使用该地址也是不安全的,因为V8不断地在其堆中移动内容。而且malloc将不会返回指向某些隔离器的js堆的地址,因为很明显,该隔离器已经对内存进行了错误处理。
发布于 2015-03-27 11:49:05
隔离:我们可以使用单个JavaScript实例独立运行多个V8函数。
https://stackoverflow.com/questions/29299397
复制相似问题