問題タブ [memory-pressure]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1396 参照

ios - uiwebview で svg をレンダリングするとメモリ不足 (およびアプリのクラッシュ) が発生する

この例のような「インタラクティブ マップ」に取り組んでいます。マップを拡大してもきれいなイラストが得られるようにする必要があったため、マップの描画は svg で行われました (実際には Illustrator で作成され、svg ファイルとして保存されました)。

アプリでは、UIWebView を作成し、svg を含む html を読み込みます。HTML ファイルはアプリ内のバンドル リソースであるため、ネットワークの遅延はありません。それらをタップすると、別のマップ (svg 図面を含む別の html ページ) に移動するタップ可能な形状があります。

svg の 1 つがかなり大きい (~5.8MB)。読み込み時に「メモリ不足」の警告が表示され、クラッシュします。Instruments は、クラッシュ時に 298.71MB の仮想メモリと 149.10MB の実メモリを示しています。

私はすでに図面を単純化しており(詳細をいくつか削除しました)、 @Peter Collingridge svg optimizerも使用しました。

クラッシュしないようにメモリ使用を最適化するにはどうすればよいですか?

0 投票する
1 に答える
1433 参照

ios - iOS AVPlayer使用時のメモリ不足により終了

私の iOS アプリケーションでは、iOS YouTube ヘルパー ライブラリを使用して、YouTube ビデオをループとして実行しています。しかし、私はビデオを完全な長さで再生する機会を与えていませんが、20 秒後に、以下のように同じビデオを再びキューに入れます。

それは私が望んでいたように完全に機能しています。

次に、YouTube が毎回ビデオを再生する前に mp4 ファイルを再生したいと考えました。それを達成するために、私はAVPlayerを使用しました。その後、コードは以下のように変更されました。

上記の変更後、アプリは期待どおりに実行されますが、4 分近く実行すると、Xcode に「Terminated due to Memory Pressure」というポップアップ ウィンドウが表示され、アプリがクラッシュします。Instruments 開発者ツールでメモリを確認したところ、アプリがクラッシュするまでに約 35 MB のメモリが使用されました。アプリが実行を開始するまでに、45 MB を超えるメモリを使用し、スムーズに実行されます。

ご覧のとおり、必要なときにのみ AVPlayer を作成し、作業が完了した直後に nil に設定しています。この問題の原因は何ですか?どうすれば解決できますか?

0 投票する
1 に答える
153 参照

ios - iPad Drawing App でのメモリ不足の問題 - 問題は実際の iPad でのみ発生し、シミュレーターでは発生しません

基本的な描画アプリを作成しています。実際のデバイスでテストするまでは、すべて問題なく動作していると思いました。iPad mini で使用すると、描画中にメモリ不足のクラッシュが発生しますが、シミュレーターではそのような問題はありません。実機で描画しているとメモリ使用量が急上昇するのを見ることができますが、シミュレータでは同じ現象が再現できず、奇妙なことです。以下に、描画に使用しているコードを投稿しました。これを引き起こしているものはありますか?どうすればメモリ使用量を減らすことができますか? ありがとうございました。

0 投票する
1 に答える
549 参照

xcode - UIWebView アプリがメモリ不足でクラッシュする

テーブルビュー内に webView をロードしています。

以下のように、webView に html 文字列をロードしました。

Web ビューのオフセットの高さに基づいて、TableView の行の高さを設定する必要があります。私は以下のようにこれを行うことができました:

}

正常に動作していますが、[heighttmp intValue] が 50,000 の制限を超えると、アプリが予期せず終了し、メモリ プレッシャが発生します。その理由は何ですか?解決策はありますか?

0 投票する
1 に答える
442 参照

virtual-memory - 負の仮想メモリ プレッシャについて

Poul-Henning Kamp の論文「You're Doing It Wrong」を読み直していたところ、図の 1 つに混乱しました。

図 1 の x 軸には、「メガバイト単位の VM 圧力」というラベルが付けられています。著者は、x 軸は「カーネルがセカンダリ ストレージにページアウトしたため、プライマリ メモリに存在しないアドレス空間の量で測定される」と明確にしています。

VM の負荷がゼロ MB であることは理解できます (すべてのアドレス空間はプライマリ メモリに存在します)。

正の VM プレッシャは理解できますが、負の 8 メガバイトの VM プレッシャがどのように見えるかを理解するのに苦労しています (図 1 の x 軸の左側を参照)。著者の説明にマイナス 8 を入れると、「- プライマリ メモリに存在しない 8 MB のアドレス空間」という結果になります。それは私には意味がありません。

著者が誤って正の数を否定したと結論付けるだけであれば、グラフはより理にかなっていますが、著者が間違いを犯したと結論付ける準備はできていません。私が持っている可能性が高いです。しかし、圧力が低下すると、実行時間は増加しますか? それは直感に反するように聞こえます。

また、-8 MB の VM メモリ プレッシャ付近で曲線が劇的に変化する理由もわかりません。

よろしくお願いします! </p>

0 投票する
2 に答える
1175 参照

ios - AFNetworking を使用して複数のファイルをダウンロードする際のメモリ不足の問題

私のアプリケーションでは、何千もの画像 (各画像サイズは最大 3 MB) と数十のビデオ (各ビデオ サイズは最大 100 MB) をダウンロードして、ドキュメント ディレクトリに保存しようとしています。

これを達成するために、AFNetworkingを使用しています

ここで私の問題は、遅いwifi(約4mbps)を使用しているときにすべてのデータを正常に取得していることですが、速度100mbpsのwifiで同じダウンロードを行っている場合、アプリケーションは画像とメモリのダウンロード中にメモリ警告を受け取りますビデオのダウンロード中に圧力の問題が発生し、アプリケーションがクラッシュします。

上記のコードは、ダウンロードする必要があるビデオと画像の数に応じてループしています

その行動の背後にある理由は何ですか

両方のシナリオのメモリ割り当てのスクリーンショットもあります

助けてください

ダウンロードした画像を保存するためのコードも追加

0 投票する
0 に答える
132 参照

ios - EXC_BAD_ACCESS およびメモリ不足のため終了

EXC_BAD_ACCESS メッセージでアプリがクラッシュします。NSZombie オブジェクトを有効にしましたが、デバッグ モードであっても「メモリ不足のため終了しました」というエラーが発生しました。

ビデオhttp://www.markj.net/iphone-memory-debug-nszombie/も見ましたが、私は Xcode 6.0.1 を使用しており、ビデオに示されているように、Instruments 内に有効にするオプションがありません。そこからゾンビ。

例外ブレークポイントを有効にしました。

EXC_BAD_ACCESS に対処する他の方法はありますか、または私が見逃しているものはありますか?

0 投票する
1 に答える
3292 参照

ios - GCD からのメモリ不足の通知に対応するにはどうすればよいですか?

GCD を使用してメモリ不足の通知を取得しています。

GCD のドキュメントでは、次のような定数について説明しています。

DISPATCH_MEMORYPRESSURE_WARN

システムのメモリ不足状態は警告段階にあります。アプリは、現在必要のないメモリを解放する必要があります。

DISPATCH_MEMORYPRESSURE_CRITICAL

システム メモリの圧迫状態が危機的な段階にあります。アプリはできるだけ多くのメモリを解放する必要があります。

未使用のメモリを解放する必要があるのは理にかなっているようです。ただし、他の場所 ( man ページソース コード) で、これらの定数に関連するこのメモを見つけました。

メモリ プレッシャーの上昇は、このソースに登録されたアプリケーションが将来のメモリ使用動作を変更することによって対応する必要があるシステム全体の状態です。たとえば、メモリ プレッシャーが正常に戻るまで、新しく開始された操作のキャッシュ サイズを縮小します。

ただし、システム システム メモリ プレッシャーが上昇した状態になった場合、アプリケーションは過去の操作の既存のキャッシュをトラバースして破棄しないでください。これは、システム メモリ プレッシャーをさらに悪化させる VM 操作をトリガーする可能性があるためです。

これは私を混乱させます。では、メモリを解放する必要がありますか、それとも新しいメモリの割り当てを停止する必要がありますか?