three.js內(nèi)存釋放問題

問題描述

在使用three.js渲染3D模型時(shí)朝聋,經(jīng)常性的會(huì)遇到在連續(xù)添加模型后来颤,導(dǎo)致瀏覽器崩潰的問題汰扭,經(jīng)過排查,發(fā)現(xiàn)是瀏覽器占用了太多的內(nèi)存福铅,但是卻一直沒有釋放萝毛,導(dǎo)致內(nèi)存被耗盡而崩潰。

解決方法

排查到問題之后滑黔,相關(guān)操作為:當(dāng)重新創(chuàng)建和加載模型時(shí)笆包,需要釋放內(nèi)存的操作,具體操作如下:

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" contenteditable="false" cid="n5" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(255, 255, 255); position: relative !important; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">?</pre>

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" contenteditable="false" cid="n6" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(255, 255, 255); position: relative !important; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">var meshList = [];
clearScene()略荡;                      //創(chuàng)建前進(jìn)行之前添加的模型存儲(chǔ)釋放操作
for(var i = 0; i<100;i++) {
 var spherGeo = new THREE.CylinderGeometry(6, 6, 30, 40, 80);
 var spherMaterial = new THREE.MeshLambertMaterial({
 color: color,
 // wireframe: true
 })
 sphere = new THREE.Mesh(spherGeo, spherMaterial);
 meshList.push(sphere);
 sphere.position.set(pointData[i].x, pointData[i].y, pointData[i].z);
 //  sphere.rotation.x = 30;
 scene.add(sphere);
 renderer.render(scene, camera);                  //重新渲染界面加載模型
}
?
/**
 * 清除模型庵佣,模型中有 group 和 scene,需要進(jìn)行判斷
 * @param scene
 * @returns
 */
function clearScene(){
 // 從scene中刪除模型并釋放內(nèi)存
 if(meshList.length > 0){ 
 for(var i = 0; i< meshList.length; i++){
 var currObj = meshList[i];

 // 判斷類型
 if(currObj instanceof THREE.Scene){
 var children = currObj.children;
 for(var i = 0; i< children.length; i++){
 deleteGroup(children[i]);
 } 
 }else{ 
 deleteGroup(currObj);
 }
 scene.remove(currObj);
 }
 }
}
?
// 刪除group,釋放內(nèi)存
function deleteGroup(group) {
 //console.log(group);
 if (!group) return;
 // 刪除掉所有的模型組內(nèi)的mesh
 group.traverse(function (item) {
 if (item instanceof THREE.Mesh) {
 item.geometry.dispose(); // 刪除幾何體
 item.material.dispose(); // 刪除材質(zhì)
 }
 });
}
?

參考文章: https://blog.csdn.net/ItChuangyi/article/details/85242427

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末汛兜,一起剝皮案震驚了整個(gè)濱河市秧了,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌序无,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衡创,死亡現(xiàn)場離奇詭異帝嗡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)璃氢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門哟玷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人一也,你說我怎么就攤上這事巢寡。” “怎么了椰苟?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵抑月,是天一觀的道長。 經(jīng)常有香客問我舆蝴,道長谦絮,這世上最難降的妖魔是什么题诵? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮层皱,結(jié)果婚禮上性锭,老公的妹妹穿的比我還像新娘。我一直安慰自己叫胖,他們只是感情好草冈,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瓮增,像睡著了一般怎棱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钉赁,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天蹄殃,我揣著相機(jī)與錄音,去河邊找鬼你踩。 笑死诅岩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的带膜。 我是一名探鬼主播吩谦,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼膝藕!你這毒婦竟也來了式廷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤芭挽,失蹤者是張志新(化名)和其女友劉穎滑废,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體袜爪,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蠕趁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辛馆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俺陋。...
    茶點(diǎn)故事閱讀 40,680評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖昙篙,靈堂內(nèi)的尸體忽然破棺而出腊状,到底是詐尸還是另有隱情,我是刑警寧澤苔可,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布缴挖,位于F島的核電站,受9級特大地震影響焚辅,放射性物質(zhì)發(fā)生泄漏醇疼。R本人自食惡果不足惜硕并,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望秧荆。 院中可真熱鬧倔毙,春花似錦、人聲如沸乙濒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽颁股。三九已至么库,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間甘有,已是汗流浹背诉儒。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留亏掀,地道東北人忱反。 一個(gè)月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像滤愕,于是被迫代替她去往敵國和親温算。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,113評論 1 32
  • 本文由作者自行翻譯间影,未經(jīng)作者授權(quán)注竿,不得隨意轉(zhuǎn)發(fā)。后續(xù)作者會(huì)陸續(xù)發(fā)布一系列關(guān)于JVM內(nèi)存管理的文章魂贬,敬請期待巩割。 1、...
    猿學(xué)堂閱讀 1,358評論 0 50
  • 所有知識點(diǎn)已整理成app app下載地址 J2EE 部分: 1.Switch能否用string做參數(shù)付燥? 在 Jav...
    侯蛋蛋_閱讀 2,450評論 1 4
  • 前言 因?yàn)閚ode絕大多數(shù)時(shí)間都是運(yùn)行在后端的服務(wù)器程序喂分,因此,需要精確控制內(nèi)存机蔗。在以前,js程序員不需要控制內(nèi)存...
    白昔月閱讀 5,668評論 5 11
  • 圖片文字遮罩 設(shè)置文字不可見:overflow:hidden /*定位使色塊在圖片正下方*/position:...
    yustyal閱讀 132評論 0 0