v8

Copy data into v8::ArrayBuffer

爷,独闯天下 提交于 2020-05-26 05:56:05
问题 I'm writing a Javascript interpreter in C++ using v8. I need to pass a char buffer into an ArrayBuffer so that it gets garbage collected. Here is my code: QByteArray data_buffer(file.readAll().data(), file.size()); v8::Handle<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(args.GetIsolate(), data_buffer.size()); //insert code to copy data from data_buffer to ab args.GetReturnValue().Set(ab); If I use the constructor from the documentation in which I pass a pointer to the data, I'll have to deal

Moving google apps script to v8 file upload stopped working from sidebar

浪子不回头ぞ 提交于 2020-05-20 10:53:30
问题 I have a script running that works as intended. But moving the script to v8 makes the script not working. And I can't find a solution. I've cleaned up the script and tested it in the old engine and still works, but in v8 still doesn't working. It's a sidebar in a spreadsheet where to upload a single file to my google drive. Here the basic in the Html file <body> <h1>File Uploader</h1> <form> <input type="file" name="myFile" id="file"> <br> <input class="blue" type="button" id="submitBtn"

Moving google apps script to v8 file upload stopped working from sidebar

﹥>﹥吖頭↗ 提交于 2020-05-20 10:53:10
问题 I have a script running that works as intended. But moving the script to v8 makes the script not working. And I can't find a solution. I've cleaned up the script and tested it in the old engine and still works, but in v8 still doesn't working. It's a sidebar in a spreadsheet where to upload a single file to my google drive. Here the basic in the Html file <body> <h1>File Uploader</h1> <form> <input type="file" name="myFile" id="file"> <br> <input class="blue" type="button" id="submitBtn"

Moving google apps script to v8 file upload stopped working from sidebar

安稳与你 提交于 2020-05-20 10:53:07
问题 I have a script running that works as intended. But moving the script to v8 makes the script not working. And I can't find a solution. I've cleaned up the script and tested it in the old engine and still works, but in v8 still doesn't working. It's a sidebar in a spreadsheet where to upload a single file to my google drive. Here the basic in the Html file <body> <h1>File Uploader</h1> <form> <input type="file" name="myFile" id="file"> <br> <input class="blue" type="button" id="submitBtn"

sscanf sscanf_s使用

佐手、 提交于 2020-05-08 21:15:25
#include<stdio.h> 定义函数 int sscanf (const char *str,const char * format,........); 函数说明 sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。 返回值 成功则返回参数数目,失败则返回-1,错误原因存于errno中。 返回0表示失败 否则,表示正确格式化数据的个数 例如:sscanf(str,"%d%d%s", &i,&i2, &s); 如果三个变成都读入成功会返回3。 如果只读入了第一个整数到i则会返回1。证明无法从str读入第二个整数。 main() { int i; unsigned int j; char input[ ]=”10 0x1b aaaaaaaa bbbbbbbb”; char s[5]; sscanf(input,”%d %x %5[a-z] %*s %f”,&i,&j,s,s); printf(“%d %d %s ”,i,j,s); } 执行 10 27 aaaaa 大家都知道sscanf是一个很好用的函数,利用它可以从字符串中取出整数、浮点数和字符串等等。它的使用方法简单,特别对于整数和浮点数来说。但新手可能并不知道处理字符串时的一些高级用法,这里做个简要说明吧。   1.

Android端穿山甲SDK集成

喜夏-厌秋 提交于 2020-05-08 16:27:28
Android端穿山甲SDK集成 SDK接入 穿山甲平台上创建测试状态的应用ID和广告位ID (ps:测试集成完毕后再把应用及对应的代码位改成正式状态) (ps:应用ID和代码位ID是对应关系 一个应用可以对应多个代码位ID) 应用ID 对应demo中的APPID 广告位ID 对应demo中的CodeId 将本SDK压缩包内的open_ad_sdk.aar添加到build.gradle中: repositories { flatDir { dirs 'libs' } } depedencies { compile ( name: 'open_ad_sdk' , ext: ‘aar' ) } 添加权限 < ! --必要权限-- > < uses-permission android:name = "android.permission.INTERNET" / > < ! --可选权限-- > < uses-permission android:name = "android.permission.READ_PHONE_STATE" / > < uses-permission android:name = "android.permission.ACCESS_NETWORK_STATE" / > < uses-permission android:name = "android

express 内存溢出问题分析定位

萝らか妹 提交于 2020-05-08 10:23:55
一、现象 1. 如下报错 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 1: node: :Abort() [ /usr/local /bin/node] 2: node: :OnFatalError(char const*, char const*) [ /usr/local /bin/node] 3: v8: :internal : :V8 : :FatalProcessOutOfMemory(char const*, bool) [ /usr/local /bin/node] 4: v8: :internal : :Factory : :NewFixedArray(int, v8: :internal : :PretenureFlag) [ /usr/local /bin/node] 5: v8: :internal : :OrderedHashTable<v8 : :internal : :OrderedHashMap, 2> : :Rehash( v8: :internal : :Handle<v8 : :internal : :OrderedHashMap>, int) [ /usr/local /bin/node] 6: v8: :internal

如何分析 Node.js 中的内存泄漏

蓝咒 提交于 2020-05-08 09:22:57
内存泄漏(Memory Leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。如果内存泄漏的位置比较关键,那么随着处理的进行可能持有越来越多的无用内存,这些无用的内存变多会引起服务器响应速度变慢,严重的情况下导致内存达到某个极限(可能是进程的上限,如 v8 的上限;也可能是系统可提供的内存上限)会使得应用程序崩溃。 传统的 C/C++ 中存在野指针,对象用完之后未释放等情况导致的内存泄漏。而在使用虚拟机执行的语言中如 Java、JavaScript 由于使用了 GC (Garbage Collection,垃圾回收)机制自动释放内存,使得程序员的精力得到的极大的解放,不用再像传统语言那样时刻对于内存的释放而战战兢兢。 但是,即便有了 GC 机制可以自动释放,但这并不意味这内存泄漏的问题不存在了。内存泄漏依旧是开发者们不能绕过的一个问题,今天让我们来了解如何分析 Node.js 中的内存泄漏。 GC in Node.js Node.js 使用 V8 作为 JavaScript 的执行引擎,所以讨论 Node.js 的 GC 情况就等于在讨论 V8 的 GC。在 V8 中一个对象的内存是否被释放,是看程序中是否还有地方持有改对象的引用。 在 V8 中,每次 GC 时,是根据 root 对象 (浏览器环境下的 window,Node.js 环境下的 global )

Node 内存泄漏排查案例

血红的双手。 提交于 2020-05-08 08:15:40
背景 在阿里云上看到我运行了一段时间的程序,发现 memory 一项基本是在稳步提升,就知道有内存泄漏的情况出现。如下图 近三日从 35% 升到 40%,缓慢而坚定的提升。 代码 排查此问题需要分析其堆内存快照,当然我们不能直接使用线上机器调试。不幸的是测服机器在内网,和阿里云联不通,alinode 发挥不了作用。但所幸的是 V8 引擎提供了内部接口可以直接把堆中的JS对象导出来供开发者分析。我们采用heapdump这个模块,执行如下命令安装 $ npm install heapdump --save "heapdump": "^0.3.15", 执行如下 const heapdump = require('heapdump'); heapdump.writeSnapshot(`./${Date.now()}.heapsnapshot`); 生成的文件如下 $ ll -lh -rw-rw-r-- 1 souche souche 38M Nov 19 19:00 1574161221512.heapsnapshot 总之我在测服上定时每 2 小时打印堆栈快照。 总之,你可以使用 scp 命令把测服的代码导出到本地 # 传递单个文件 $ scp 【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】【本地文件的路径】 # 例如 $ scp souche@172.11.xxx

node包管理工具--nvm(windows)

前提是你 提交于 2020-05-08 05:47:05
windows 安装nvw-windows 使用nvm工具; windows使用nvm-noinstall.zip安装 nvm-noinstall.zip 这个是绿色免安装版本,但是使用之前需要配置 nvm-windows 下载 下载最新版本 Assets下 nvm-noinstall.zip文件 把nvm_noinstall.zip解压到比如 C:/dev/nvm 中(其它盘也可以); 右键以管理员的身份运行install.cmd . 直接按回车,在C盘根目录下会生成一个settins,txt.并拷贝到C:/dev/nvm.修改内容: root: C:\dev\nvm path: C:\dev\nodejs arch: 64 proxy: none node_mirror: http://npm.taobao.org/mirrors/node/ npm_mirror: https://npm.taobao.org/mirrors/npm/ root 配置为当前nvm.exe所在的目录; path 配置为node快捷方式所在的目录; arch 配置为当前操作系统的位数(32/64); proxy 表示代理,一般不用配置,有的直接设置为none; 使用nvm install 8.11.1 下载node v8.11.1 版本,可能网速慢或者需要翻墙导致error下载失败