検索
ホームページウェブフロントエンドhtmlチュートリアルH5 クラッシュ リサーチ_html/css_WEB-ITnose

Webview でページが適切に実行されるための前提条件は、効率的で安定した Webview コンテナーを備えていることであることはわかっています。コンテナーの効率と安定性は、コンテナー プロバイダーによって保証されるだけでなく、コンテナー ユーザーにも準拠する必要があります。そうしないと、ページがクラッシュする可能性があります。これらのガイドラインは何ですか?どのような上位レベルのコードがコンテナを異常終了させるのでしょうか?これがこの記事で説明する必要があることです。

H5 クラッシュ問題の概要

以下の図は H5 クラッシュの大まかなフローチャートです:

フロントエンドはページクラッシュのステータスとスタックをキャプチャできないため、H5 ページで発生したエラーは に渡されます。 Java および下位レベルのネイティブは、コンテナーが異常終了するまで待機し、終了時にコンテナーがスタックをログに書き込み、次回コンテナーが開かれたときにスタック情報が報告されます (定期的に報告される場合もあります)。 )。

H5 クラッシュ初期調査

テストコード倉庫アドレス:

git clone https://github.com/barretlee/h5crash.git;cd demo;

注: コードは Webview コンテナーでテストする必要があり、PC ブラウザーでは例外は発生しません。

H5 クラッシュの原因は明らかではありませんが、経験と調査から判断すると、次の 3 つのタイプに大別できます:

1. メモリの問題

  • テスト方法: クロージャを使用し、メモリ量を継続的に増加します。 、増加するかどうかを確認します どの間隔サイズで、WebView コンテナーが異常になります
  • テストアドレス: https://rawgit.com/barretlee/h5crash/master/demo/crash-memory.html (このページを開くユーザーWeChat、Weibo、またはその他のクライアントでは、クリックしてテストし、100M メモリを選択できます。予想通り、クライアントはクラッシュします。)

既存の干渉: この種のテストには、次のような多くの干渉があります。デバイスタイプ、システムタイプ(iOS/Android)、デバイスメモリ動作状態など

    2. レイヤー数の問題
  • Chrome ドライバーにはこのデータのインターフェイスが用意されておらず、現時点ではこのデータを取得するより良い方法はありません。

テスト方法: さまざまな方法でレイヤーを作成し、ページのクラッシュ状況を観察します

テストアドレス: https://rawgit.com/barretlee/h5crash/master/demo/crash-layer.html
  • <script>var Closure = function() { var _cache = []; var cache = 0; var add = function(size) { cache += size; size = size * 1024 * 1024; _cache.push(new Array(size).join('x')); refresh(); }; var refresh = function() { r.innerHTML = '内存消耗: ' + cache + 'M'; }; return { cache: _cache + 'M', add: add, refresh: refresh }};var closure = Closure();</script><button onclick="closure.add(1)">增加 1M 内存消耗</button><button onclick="closure.add(10)">增加 10M 内存消耗</button><button onclick="closure.add(20)">增加 20M 内存消耗</button><button onclick="closure.add(50)">增加 50M 内存消耗</button><button onclick="closure.add(100)">增加 100M 内存消耗</button><div id="r">内存消耗:0 M</div>

実際、複数のレイヤーを作成するとメモリが大量に消費されます。ページクラッシュは過剰なメモリ消費が原因である可能性があります

    3. 同時実行性の問題
テスト方法: 複数の異なるリクエストを同時に発行してみてください。フェッチリクエスト、

    既存の干渉: デバイスの種類、デバイスの CPU 使用率、ネットワーク状態など。
  • H5 クラッシュ テスト結果
テスト結果:

不透明度、アニメーション、位置などを使用してレイヤーを作成します。1 ワットがあってもページは大きく変わりませんが、変換を使用して 2k ~ 5k のレイヤーを作成します。ページがスタックします 数秒後にすぐにクラッシュします。
    メモリは一度に 20M を消費すると、クライアントがすぐにクラッシュすることが判明しました。
  • 同時リクエストでも応答の問題が発生します。 API と CSS リソースは 1k の同時実行です。リクエストには問題ありませんが、XHR とスクリプト リソースのリクエストでは特に問題が顕著です。ページはクラッシュしませんが、ページは一時停止アニメーション状態に入ります。

上記の臨界値は依然として正確である可能性があります。

概要
    この記事は主に H5 クラッシュに関する予備調査であり、テストには多くの誤りがある可能性があり、テスト方法も改善する必要がありますが、これらの方向に沿って結論を見つけるのは簡単です。
  • 将来的には、より意味のある境界データと検出ツールが提供される予定です。
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
HTMLの役割:Webコンテンツの構造HTMLの役割:Webコンテンツの構造Apr 11, 2025 am 12:12 AM

HTMLの役割は、タグと属性を使用してWebページの構造とコンテンツを定義することです。 1。HTMLは、読みやすく理解しやすいようなタグを介してコンテンツを整理します。 2。アクセシビリティとSEOを強化するには、セマンティックタグなどを使用します。 3. HTMLコードの最適化により、Webページの読み込み速度とユーザーエクスペリエンスが向上する可能性があります。

HTMLとコード:用語を詳しく見るHTMLとコード:用語を詳しく見るApr 10, 2025 am 09:28 AM

htmlisaspecifictypeofcodefocuseduructuringwebcontent

HTML、CSS、およびJavaScript:Web開発者に不可欠なツールHTML、CSS、およびJavaScript:Web開発者に不可欠なツールApr 09, 2025 am 12:12 AM

HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。

HTML、CSS、およびJavaScriptの役割:コアの責任HTML、CSS、およびJavaScriptの役割:コアの責任Apr 08, 2025 pm 07:05 PM

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

HTMLは初心者のために簡単に学ぶことができますか?HTMLは初心者のために簡単に学ぶことができますか?Apr 07, 2025 am 12:11 AM

HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用​​できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

HTMLでの開始タグの例は何ですか?HTMLでの開始タグの例は何ですか?Apr 06, 2025 am 12:04 AM

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

CSSのフレックスボックスレイアウトを使用して、メニューの点線のラインセグメンテーション効果のセンターアラインメントを実現する方法は?CSSのフレックスボックスレイアウトを使用して、メニューの点線のラインセグメンテーション効果のセンターアラインメントを実現する方法は?Apr 05, 2025 pm 01:24 PM

メニューで点線のラインセグメンテーション効果を設計する方法は?メニューを設計するときは、通常、皿の名前と価格の間に左右に合わせることは難しくありませんが、真ん中の点線またはポイントはどうですか...

オンラインコードエディターはコード入力を実装するためにどのようなHTML要素を使用していますか?オンラインコードエディターはコード入力を実装するためにどのようなHTML要素を使用していますか?Apr 05, 2025 pm 01:21 PM

WebコードエディターのHTML要素分析では、多くのオンラインコードエディターを使用すると、ユーザーはHTML、CSS、およびJavaScriptコードを入力できます。最近、誰かが提案した...

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい