新聞中心
穩(wěn)定性: 1 - 試驗(yàn)類: smalloc
表示能夠通過簡單的內(nèi)存分配器(處理擴(kuò)展原始內(nèi)存的分配)支持的緩存,可供Smalloc使用的函數(shù)如下所示:

作為一家“創(chuàng)意+整合+營銷”的成都網(wǎng)站建設(shè)機(jī)構(gòu),我們在業(yè)內(nèi)良好的客戶口碑。成都創(chuàng)新互聯(lián)提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、創(chuàng)意表現(xiàn)、網(wǎng)頁制作、系統(tǒng)開發(fā)以及后續(xù)網(wǎng)站營銷運(yùn)營等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營模式與有效的網(wǎng)絡(luò)營銷方法,創(chuàng)造更大的價(jià)值。
smalloc.alloc(length[, receiver][, type])
length{Number}<= smalloc.kMaxLengthreceiver{Object} 默認(rèn):new Objecttype{Enum} 默認(rèn):Uint8
此函數(shù)的作用為返回包含分配的外部數(shù)組數(shù)據(jù)的receiver對象。如果沒有傳入receiver,則將會創(chuàng)建并返回一個(gè)新的對象。
這可以用來創(chuàng)建你自己的類似buffer的類。不會設(shè)置其他屬性,因此使用者需要跟蹤其他所需信息(比如分配的長度)。
function SimpleData(n) {
this.length = n;
smalloc.alloc(this.length, this);
}
SimpleData.prototype = { /* ... */ };僅檢查receiver是否是非數(shù)組的對象。因此,可以分配擴(kuò)展數(shù)據(jù)數(shù)據(jù),不僅是普通對象。
function allocMe() { }
smalloc.alloc(3, allocMe);
// { [Function allocMe] '0': 0, '1': 0, '2': 0 }v8不支持給數(shù)組分配擴(kuò)展數(shù)組對象,如果這么做,將會拋出。
你可以指定外部數(shù)組數(shù)據(jù)的類型,在smalloc.Types列出了可供使用的外部數(shù)組數(shù)據(jù)的類型,例如:
var doubleArr = smalloc.alloc(3, smalloc.Types.Double);
for (var i = 0; i < 3; i++)
doubleArr = i / 10;
// { '0': 0, '1': 0.1, '2': 0.2 }使用Object.freeze,Object.seal和Object.preventExtensions不能凍結(jié)、封鎖、阻止對象的使用擴(kuò)展數(shù)據(jù)擴(kuò)展。
smalloc.copyOnto(source, sourceStart, dest, destStart, copyLength);
source{Object} 分配了外部數(shù)組的對象sourceStart{Number} 負(fù)責(zé)的起始位置dest{Object} 分配了外部數(shù)組的對象destStart{Number} 拷貝到目標(biāo)的起始位置copyLength{Number} 需要拷貝的長度
將內(nèi)存從一個(gè)外部數(shù)組分配復(fù)制到另一個(gè)數(shù)組中,任何參數(shù)都是可選的,否則會拋出異常。
var a = smalloc.alloc(4);
var b = smalloc.alloc(4);
for (var i = 0; i < 4; i++) {
a[i] = i;
b[i] = i * 2;
}
// { '0': 0, '1': 1, '2': 2, '3': 3 }
// { '0': 0, '1': 2, '2': 4, '3': 6 }
smalloc.copyOnto(b, 2, a, 0, 2);
// { '0': 4, '1': 6, '2': 2, '3': 3 }copyOnto將自動檢測內(nèi)部分配的長度,因此不需要設(shè)置任何附加參數(shù)。
smalloc.dispose(obj)
objObject
釋放通過smalloc.alloc給對象分配的內(nèi)存。
var a = {};
smalloc.alloc(3, a);
// { '0': 0, '1': 0, '2': 0 }
smalloc.dispose(a);
// {}這對于減輕垃圾回收器的負(fù)擔(dān)是有效的,但是在開發(fā)的時(shí)候還是要小心,程序里可能會出現(xiàn)難以跟蹤的錯(cuò)誤。
var a = smalloc.alloc(4);
var b = smalloc.alloc(4);
// perform this somewhere along the line
smalloc.dispose(b);
// now trying to copy some data out
smalloc.copyOnto(b, 2, a, 0, 2);
// now results in:
// RangeError: copy_length > source_length調(diào)用dispose(),對象依舊擁有外部數(shù)據(jù),例如smalloc.hasExternalData()會返回true。dispose()不支持緩存,如果傳入將會拋出。
smalloc.hasExternalData(obj)
obj{Object}
如果obj擁有外部分配的內(nèi)存,返回true。
smalloc.kMaxLength
可分配的最大數(shù)量。則同樣適用于緩沖區(qū)的創(chuàng)建。
smalloc.Types
外部數(shù)組的類型,包含:
Int8Uint8Int16Uint16Int32Uint32FloatDoubleUint8Clamped
當(dāng)前文章:創(chuàng)新互聯(lián)Node.js教程:Node.jsSmalloc
分享路徑:http://www.dlmjj.cn/article/djhggpd.html


咨詢
建站咨詢
