chromejs線程(Chrome開啟多線程下載)

本文目錄一覽:

Google chrome 出現WEbGL遇到問題怎麼辦?

異步請求過多

瀏覽器對並發異步請求是有限制的。如果程序不做處理,“同時”發送幾百個請求就可能導致瀏覽器崩潰。解決這樣的問題涉及到數據管理的問題。有的需要多次請求得到的數據可以重新組織在一次或幾次請求完成。如果就是需要若干次請求,就需要把請求排隊,用多個異步請求隊列加載數據。

並發異步請求資源死鎖

若一個資源被多個異步請求同時請求的時候就可能導致瀏覽器死鎖,死鎖的結果就是瀏覽器崩潰。默認瀏覽器都是啟用cache的,而瀏覽器在從cache中讀取數據的時候會加鎖。就需要在組織異步請求隊列的時候,相同的資源不能在不同的隊列中出現

GPU進程崩潰

Chrome是多進程架構,每個Tab都會啟用單獨的進程來處理頁面。但,所有的進程都會公用一個GPU進程。

如果開啟多個WebGL應用頁面,每個頁面佔用一定的GPU資源,GPU進程的內存加起來總的就會輕輕鬆鬆超過1.5G,結果就是GPU進程崩潰,即使是64位Chrome。

在實際中用WebGL顯示大模型會輕輕鬆鬆的撐爆GPU進程。這就需要顯示引擎要處理好頂點數據的內存佔用。方法有很多種,這裡就不多贅述了。

JS使用內存過多導致崩潰

在上圖中可以看到多個內存:內存、GPU內存、Javascript內存。其中Javascript內存是JS對象佔用的內存,垃圾回收會影響這部分內存。Javascript代碼和垃圾回收運行在同一個線程的環境,當垃圾回收的時候,js代碼不會執行。如果js對象過多,(佔用內存過多),垃圾回收的過程也會變得漫長。所以Chrome簡單粗暴的限制了Javascript內存的佔用,在x64下最大~1.4G。解決這樣的問題需要優化數據結構或者增加數據動態管理的機制。

JS代碼運行Timeout

如果JS運行時間過長,超出一定的時間,瀏覽器就彈個對話框,讓用戶選擇是否結束。相同的代碼在chrome中沒有問題,而在firefox中就可能無響應。

解決方法就是把耗時的算法設計成分部執行,結合setTimeout或者requestAnimationFrame使用。

總結:相對桌面應用,瀏覽器仍然是一個資源受限的環境:JS執行效率,內存管理,線程等。對於大規模的Web應用,需要不斷的在效率性能和資源佔用上做平衡。

chrome 如何調試js

是可以調試js的。

使用的工具:谷歌瀏覽器、測試的網站;

可以按照下面的方法進行調試:

1、f12 打開開發者工具,控制台介紹:

Elements:頁面元素,可以進行編輯,保存後實時查看頁面效果;

Network: 查看js模擬的http請求,例如下圖中修改購物車中商品數量,可以實時的看到請求地址,直接上圖。

2、點擊請求地址,會把請求的頭信息和響應信息等數據展示出來,此處非常便捷,展示樣式比firebug更直觀,直接上圖,可以點擊查看頭信息,preview,響應信息,cookie,timeline對我們有用的。注意,preview是此處模擬http請求的發送數據,直接預覽出來了。

3、Sources:次功能是js頁面調試中最突出的功能,上圖。

功能介紹:左側sources目錄可以展開,查看加載本頁面所調用的資源,如js,css,php。此處先介紹斷點調試,可以順序的看到程序的執行過車,勾選右側的Any XHR 按鈕,上圖。

4、一步一步執行,如添加數量的時候,可以看到右側的call stock進程,可以看到此處出發了js中changePrice()函數,在此處我們可以進行邏輯分析了。或則在代碼行處單擊設置斷點,英文選項是add breakpoints,單擊右擊都可以,最是好用,上圖。

5、可以查看你設置的所有斷點,右側展開,如圖,斷點調試用的比較多,當然了還可以在js里直接寫代碼,查看實時數據變化,查看要注意ctrl+s 保存操作。

6、Timeline:次功能是查看頁面性能,頁面渲染速度的,一般是用不到的。測試人員可以查看,圖中展示一些性能參數供參考,上圖。

Profile:次功能主要測試加載文件速度參考,可以在此處上傳我們的文件供測試用。點擊 Load上傳即可,一般用不着。

備註:Console:此功能是模擬js控制台,直接寫代碼,查看結果。高級功能使用時開啟斷點,查看變量的變化過程。還可以條用函數。

如何實現javascript多線程同時運行?

javascript沒有多線程,所以也不存在多線程同時運行的說法。平時寫代碼的時候需要考慮盡量避免線程阻塞。

比較好的方法就是盡量使用異步+回調的方式進行處理。

為什麼chrome採用多進程方式

簡單的說,chrome是一個用內存換速度的瀏覽器。

優勢:

1.每個tab,每個插件都會啟動一個進程,這樣即使因為某個頁面崩潰了也不會影響其他頁面,而firefox經常,整個崩掉。(因為各種插件,html和js都是規則比較鬆散的,任憑瀏覽器如何強大總會有更多奇怪的東西需要解析和兼容,不可能完全避免崩潰)

2.因為進程間的通信比線程更加複雜,chrome會有一個主進程去控制協調各個tab和各個插件間的進程。

劣勢:

1.如果開啟的頁面很多,因為大量進程的存在會導致大量資源消耗。

另外,windows鼓勵多線程,少進程。我認為也可能和他的資源回收設計相關,一台windowsPC連續工作一周不關閉,會非常的卡頓。linux則沒有這個現象。

以上:無論是多進程還是多線程的瀏覽器都各有利弊,另外firefox也有計劃發布多進程的瀏覽器。

在計算資源和內存資源逐漸廉價的個人PC上,開啟十幾個網頁造成的進程壓力也是可以接受的。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/231669.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 01:06
下一篇 2024-12-11 01:06

相關推薦

  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python線程等待指南

    本文將從多個方面詳細講解Python線程等待的相關知識。 一、等待線程結束 在多線程編程中,經常需要等待線程執行完畢再進行下一步操作。可以使用join()方法實現等待線程執行完畢再…

    編程 2025-04-29
  • Python兩個線程交替打印1到100

    這篇文章的主題是關於Python多線程的應用。我們將會通過實際的代碼,學習如何使用Python兩個線程交替打印1到100。 一、創建線程 在Python中,我們可以使用Thread…

    編程 2025-04-28
  • ROS線程發布消息異常解決方法

    針對ROS線程發布消息異常問題,我們可以從以下幾個方面進行分析和解決。 一、檢查ROS代碼是否正確 首先,我們需要檢查ROS代碼是否正確。可能會出現的問題包括: 是否正確初始化RO…

    編程 2025-04-28
  • Python線程池並發爬蟲

    Python線程池並發爬蟲是實現多線程爬取數據的常用技術之一,可以在一定程度上提高爬取效率和數據處理能力。本文將從多個方面對Python線程池並發爬蟲做詳細的闡述,包括線程池的實現…

    編程 2025-04-27
  • 多線程和多進程的應用

    多線程和多進程是現代編程中常用的技術,可以提高程序的效率和性能。本文將從不同的角度對多線程和多進程進行詳細的介紹和應用。 一、多線程 vs 多進程 多線程和多進程都是為了實現程序並…

    編程 2025-04-27
  • Python多線程模塊實踐

    本文將向大家介紹Python中的多線程模塊,並通過示例代碼來展示如何靈活使用線程提升程序的性能。同時,本文還將討論Python多線程模塊使用中可能遇到的一些問題及其解決方法。 一、…

    編程 2025-04-27
  • 線程池中的一個線程異常了會被怎麼處理

    本文將從以下幾個方面對線程池中的一個線程異常了會被怎麼處理進行詳細闡述:異常的類型、如何捕獲異常、異常的處理方式。 一、異常的類型 在線程池中,可以出現多種類型的異常,例如線程執行…

    編程 2025-04-27
  • 用c++實現信號量操作,讓你的多線程程序輕鬆實現同步

    在多線程編程中,線程之間的同步問題是非常重要的。信號量是一種解決線程同步問題的有效機制。本文將介紹如何使用C++實現信號量操作,讓你的多線程程序輕鬆實現同步。在介紹實現方法之前,我…

    編程 2025-04-25
  • 線程池的七個參數

    在多線程編程中,線程池是一種非常重要的編程模型,可以解決線程創建銷毀的開銷問題,提高程序的效率。在使用線程池時,需要對其七個參數進行配置,以達到最佳性能。下面將從多個方面詳細闡述線…

    編程 2025-04-25

發表回復

登錄後才能評論