@1: 線程和進(jìn)程得區(qū)別
什么是進(jìn)程葱跋,什么是線程氨淌?
進(jìn)程:是并發(fā)執(zhí)行的程序在執(zhí)行過程中分配和管理資源的基本單位萤彩,是一個(gè)動(dòng)態(tài)概念,競爭計(jì)算機(jī)系統(tǒng)資源的基本單位坚弱。
線程:是進(jìn)程的一個(gè)執(zhí)行單元蜀备,是進(jìn)程內(nèi)科調(diào)度實(shí)體。比進(jìn)程更小的獨(dú)立運(yùn)行的基本單位荒叶。線程也被稱為輕量級(jí)進(jìn)程碾阁。
進(jìn)程線程的區(qū)別:
1、地址空間:同一進(jìn)程的線程共享本進(jìn)程的地址空間些楣,而進(jìn)程之間則是獨(dú)立的地址空間脂凶。
2、資源擁有:同一進(jìn)程內(nèi)的線程共享本進(jìn)程的資源愁茁,但是進(jìn)程之間的資源是獨(dú)立的蚕钦。
3、一個(gè)進(jìn)程崩潰后鹅很,在保護(hù)模式下不會(huì)對(duì)其他進(jìn)程產(chǎn)生影響嘶居,但是一個(gè)線程崩潰整個(gè)進(jìn)程都死掉。所以多進(jìn)程要比多線程健壯促煮。
4邮屁、進(jìn)程切換時(shí),消耗的資源大菠齿,效率高佑吝。所以涉及到頻繁的切換時(shí),使用線程要好于進(jìn)程泞当。同樣如果要求同時(shí)進(jìn)行并且又要共享某些變量的并發(fā)操作迹蛤,只能用線程不能用進(jìn)程民珍。
5襟士、執(zhí)行過程:每個(gè)獨(dú)立的進(jìn)程程有一個(gè)程序運(yùn)行的入口盗飒、順序執(zhí)行序列和程序入口。但是線程不能獨(dú)立執(zhí)行陋桂,必須依存在應(yīng)用程序中逆趣,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。
6嗜历、線程是處理器調(diào)度的基本單位宣渗,但是進(jìn)程不是。
7梨州、兩者均可并發(fā)執(zhí)行痕囱。
優(yōu)缺點(diǎn):
線程執(zhí)行開銷小,但是不利于資源的管理和保護(hù)暴匠。線程適合在SMP機(jī)器(雙CPU系統(tǒng))上運(yùn)行鞍恢。
進(jìn)程執(zhí)行開銷大,但是能夠很好的進(jìn)行資源管理和保護(hù)每窖。進(jìn)程可以跨機(jī)器前移
@2: eval是做什么得
eval函數(shù)是強(qiáng)大的數(shù)碼轉(zhuǎn)換引擎,字符串經(jīng)eval轉(zhuǎn)換后得到一個(gè)javascript對(duì)象,
var a = eval(“5″);等效于var a = 5;
var a = eval(“’5′”);等效于var a = ’5′;
var obj = eval(“({name:’cat’,color:’black’})”);
等效于 var obj = {name:’cat’,color:’black’};
eval(“alert(‘hello world!’);”);等效于 alert(‘hello world!’);
@3: 哪些操作會(huì)造成內(nèi)存泄漏
1)意外的全局變量引起的內(nèi)存泄露
2)閉包引起的內(nèi)存泄露
3)沒有清理的DOM元素引用
4)被遺忘的定時(shí)器或者回調(diào)
5)子元素存在引起的內(nèi)存泄露