共 9 篇文章
显示摘要每页显示  条
复制( Copying )算法为了解决标记-清除算法在垃圾收集效率方面的缺陷, M. L. Minsky 于 1963 年发表了著名的论文“一种使用双存储区的 Lisp 语言垃圾收集器( A LISP Garbage Collector Algorithm Using Serial Secondary Storage )”。至此,垃圾收集技术的三大传统算法——引用计数算法、标记-清除算法和复制算法——都已在 1960 年前...
(ii) 当对象地址小于age_mark时,to_space的age_mark在每次scavenge后被置成新的可用起始地址,即如果对象在上一次scavenge中survive,那么在下次的scavenge中将会被置换到OldSpace(根据对象类型拷贝至Old_Pointer_Space or Old_Data_Space,见Heap::TargetSpaceId,Heap numbers and sequential strings are promoted to old data space, all...
V8系列——内存管理(1)自己对内存管理的好处不少:减少内存分配、回收开销、避免内存碎片、定位内存位置、方便内存整理、跟踪内存使用等等。概念上讲Young Generation = new space,Old Generation = old space,即Heap又可以看成被划分成若干个space(既有free space,也有PagedSpace,即空间的大小与内存页大小对齐),每个space专门负责相应...
在这里插一嘴,在android框架代码的Canvas.h文件中($(ANDROID_SRC_ROOT)/frameworks/base/graphics/java/android/graphics/Canvas.h),可以看到如下的定义:final int mNativeCanvas;经过进一步的代码追踪,偶发现这个所谓的mNativeCanvas实际上就是指向skia库中的一个SkCanvas对象的指针。在偶的jni模块实现中,把上述在java中的三个步骤统...
现在该回过头来看看刚刚关于foo.cpp的实现代码中的一个遗留问题了,以下面这个函数为例:v8::Handle<v8::Value> CFoo::set_color(const v8::Arguments& args) { CFoo * foo_ptr = util_unwrap_obj<CFoo>(args.Holder()) ; if(args.Length() == 3) { foo_ptr->SetColor(args[0]->Int32Value(), ...
// 创建javascript脚本的存储对象,该对象存放从文件中读取的脚本字符串 Handle<String> js_source ;具体的方法其实很简单,前半部分与定义和调用javascript的步骤一致,只不过从js_compiled->Run(),这一句以后,还没有完,还要继续做下面的事情: Handle<String> js_func_name ; Handle<Value> js_func_val ; Hand...
V8 JavaScript 引擎 – 嵌入者指南。这些句柄的生存时间由句柄范围决定,句柄范围经常在一个函数的开始的时候被创建。当句柄范围被删除时,垃圾收集器将自由的析构掉那些前面在句柄范围内被句柄引用的对象,只要那些对象不再被JavaScript访问或者不被其他的句柄引用。因为 context 句柄是一个持久句柄,他在句柄范围退出时并不会被删除。从这方...
V8 Javascript 引擎设计理念。JavaScript 是一门动态语言,属性可以在运行时添加到或从对象中删除。大部分JavaScript引擎都使用一个类似于字典的数据结构来存储对象的属性,这样每次访问对象的属性都需要进行一次动态的字典查找来获取属性在内存中的位置。当属性 x 被添加到对象中的时候,V8 通过 C0 到 C1 的类转移信息将对象的隐藏类更新为 C...
帮助 | 留言交流 | 联系我们 | 服务条款 | 下载网文摘手 | 下载手机客户端
北京六智信息技术股份有限公司 Copyright© 2005-2024 360doc.com , All Rights Reserved
京ICP证090625号 京ICP备05038915号 京网文[2016]6433-853号 京公网安备11010502030377号
返回
顶部