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 クラッシュ テスト結果
- メモリは一度に 20M を消費すると、クライアントがすぐにクラッシュすることが判明しました。
- 同時リクエストでも応答の問題が発生します。 API と CSS リソースは 1k の同時実行です。リクエストには問題ありませんが、XHR とスクリプト リソースのリクエストでは特に問題が顕著です。ページはクラッシュしませんが、ページは一時停止アニメーション状態に入ります。
- この記事は主に H5 クラッシュに関する予備調査であり、テストには多くの誤りがある可能性があり、テスト方法も改善する必要がありますが、これらの方向に沿って結論を見つけるのは簡単です。
- 将来的には、より意味のある境界データと検出ツールが提供される予定です。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

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

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

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