目次
H5 クラッシュ問題の概要
H5 クラッシュ初期調査
1. メモリの問題
ホームページ ウェブフロントエンド htmlチュートリアル H5 クラッシュ リサーチ_html/css_WEB-ITnose

H5 クラッシュ リサーチ_html/css_WEB-ITnose

Jun 24, 2016 am 11:16 AM

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 までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

&lt; Progress&gt;の目的は何ですか 要素? &lt; Progress&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

&lt; datalist&gt;の目的は何ですか 要素? &lt; datalist&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

&lt; meter&gt;の目的は何ですか 要素? &lt; meter&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? Mar 17, 2025 pm 12:20 PM

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? Mar 12, 2025 pm 04:05 PM

この記事では、html5&lt; time&gt;について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? Mar 17, 2025 pm 12:27 PM

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? Mar 20, 2025 pm 05:56 PM

この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。

&lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? &lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? Mar 20, 2025 pm 06:05 PM

この記事では、&lt; iframe&gt;外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。

See all articles