タグ付けされた質問 「memory-management」

可能であれば、公平でリクエスター間のスターベーションがないプログラム要求に応答するために、物理メモリーの一部を動的に割り当てて解放するプロセス。

8
Rメモリ管理/サイズn Mbのベクトルを割り当てることができません
Rで大きなオブジェクトを使用しようとすると問題が発生します。次に例を示します。 > memory.limit(4000) > a = matrix(NA, 1500000, 60) > a = matrix(NA, 2500000, 60) > a = matrix(NA, 3500000, 60) Error: cannot allocate vector of size 801.1 Mb > a = matrix(NA, 2500000, 60) Error: cannot allocate vector of size 572.2 Mb # Can't go smaller anymore > rm(list=ls(all=TRUE)) …

3
アプリが使用できるRAMの最大量はいくつですか?
Androidオペレーティングシステムのメモリ管理に関するこの質問にかなり興味があるので、そのトピックについて非常に詳細な回答を期待しています。 私が知りたいこと: Androidアプリ(システムアプリではない)が使用できるメモリの最大量(メガバイト / RAM全体のパーセンテージ)はどれくらい ですか? Androidのバージョンに違いはありますか? デバイスのメーカーに関して何か違いはありますか? 最も重要な: 実行時にアプリが使用できるRAMの量を決定するシステムに関しては、何が考慮され、何に依存しますか(アプリごとの最大メモリが静的な数値ではないと想定)。 これまでに聞いたことがある(2013年まで): 初期のAndroidデバイスのアプリごとの上限は16MBでした その後、この上限は24MBまたは32MBに増加しました 何が私をとても興味深くしているのですか? これらの制限はどちらも非常に低いです。 最近、デバイスのRAMを確認するためにAndroidタスクマネージャーをダウンロードしました。私が気づいたのは、約40〜50メガバイトのRAMを使用するアプリケーションがあることです。これは、前述の最大RAM使用量(たとえば、32 MB)を超えたものです。では、Androidはアプリが使用できるRAMの量をどのように決定するのでしょうか?アプリがその制限を超える可能性はありますか? さらに、約30〜40メガバイトを使用すると、一部のアプリがOutOfMemoryExceptionでクラッシュします(システムによって強制終了されましたか?)。一方、私は自分の電話で100 MB以上を使用しているアプリを実行していますが、おそらくメモリリークが原因で、クラッシュしたり強制終了したりすることはありません。そのため、 RAMをどれだけ節約できるかを判断する際には、アプリ自体にも明らかに依存します。これはどのようにして可能ですか?(私は768 MB RAMのHTC One Sでテストを実施しました) 免責事項:私は、Android Task Managerアプリとは一切関係ありません。

8
IDisposableを正しく実装する
私のクラスでは、IDisposableを次のように実装します。 public class User : IDisposable { public int id { get; protected set; } public string name { get; protected set; } public string pass { get; protected set; } public User(int UserID) { id = UserID; } public User(string Username, string Password) { name = Username; pass = …

26
保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示しています
私は誰かがこのエラーを引き起こしている可能性があるものについて私を啓発してくれることを願っています: 保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示しています。 このエラーはアプリケーションの任意のランダムな領域でスローされるようなので、実際にコードをポストすることはできません。アプリケーションは、エラーをスローする前に12〜48時間実行されます。一見ランダムなスポットで停止して上記のエラーをスローする場合もあれば、アプリケーション全体が停止し、「致命的なエラーが発生しました... CLRのバグまたは...」PInvokeやその他の関連性のない情報についての何か。これが発生すると、すべてのスレッドが終了したと表示され、利用可能なデバッグ情報はありません。 一言で言えば、これはアプリケーションが行うことです: 完全にC#で記述されたマルチスレッドサーバーアプリケーション。クライアントはソケット経由でサーバーに接続します。サーバーは、クライアントが相互に、また環境と対話できる仮想の「環境」を実行します。かなりのメモリを消費しますが、リークは発生しません。通常、約1.5 GBを消費します。アプリケーションが実行されている間、メモリ使用量は比較的一定に保たれるため、リークが発生するとは思いません。クライアントが何もしていなくても、環境を維持するために常に実行しているコード。サードパーティのソフトウェアやその他のAPIは使用していません。このアプリケーションが使用する唯一の外部リソースは、ソケット接続とSQLデータベース接続です。64ビットサーバーで実行されています。.net 2.0、3.5、および4を使用して、VS2008およびVS2010でこれをデバッグしてみました。 コンパイラの最適化といくつかのMicrosoftホットフィックスをオフにしてみました。この問題を解消するものは何もないようです。誰かが考えられる原因、または問題の原因を特定するための何らかの方法を知っていれば幸いです。

8
Javaの変数のメモリアドレス
下の写真をご覧ください。newキーワードを使用してJavaでオブジェクトを作成すると、OSからメモリアドレスが取得されます。 書くout.println(objName)と、「特別な」文字列が出力として表示されます。私の質問は: この出力は何ですか? OSから提供されたメモリアドレスの場合: a)この文字列をバイナリに変換するにはどうすればよいですか? b)整数変数のアドレスを1つ取得するにはどうすればよいですか?

10
Djangoのメモリ使用量の削減。容易に解決できる問題?
私のメモリ使用量は時間とともに増加し、Djangoの再起動はユーザーに親切ではありません。 メモリ使用量のプロファイリングを行う方法がわかりませんが、測定を開始する方法に関するいくつかのヒントが役立つでしょう。 大きな利益を生み出すことができるいくつかの簡単なステップがあると感じています。「デバッグ」が「False」に設定されていることを確認することは、明らかに重要です。 誰かが他の人を提案できますか?トラフィックの少ないサイトでのキャッシングはどの程度改善されますか? この場合、私はApache 2.xでmod_pythonを実行しています。mod_wsgiは少しスリムであると聞いたことがありますが、大幅な向上が見込めない場合は、この段階で切り替えるのは難しいでしょう。 編集:これまでのヒントをありがとう。メモリを消費しているものを見つける方法はありますか?Pythonメモリプロファイリングのガイドはありますか? また、前述のように、mod_wsgiに切り替えるのが難しいいくつかのことがあるので、その方向に進む前に期待できる利益について考えたいと思います。 編集:カールは、ここに読む価値がある少し詳細な返信を投稿しました:Djangoデプロイメント:Apacheのオーバーヘッドの削減 編集: グラハム・ダンプルトンの記事は、MPMおよびmod_wsgi関連のもので私が見つけた中で最高です。ただし、アプリ自体のメモリ使用量のデバッグに関する情報を誰も提供できなかったことにはかなりがっかりしています。 最終編集:まあ、私はこれをWebfactionと話し合って、Apacheの再コンパイルを支援できるかどうかを確認してきました。 「MPMワーカー+ mod_wsgi設定に切り替えることで、多くのメリットが得られるとは思いません。20MB程度節約できると思いますが、それ以上ではないでしょう。」 そう!これにより、元の質問に戻ります(私はまだ賢明ではありません)。問題がどこにあるのかを特定するにはどうすればよいですか?最適化する必要がある場所を確認するためのテストなしに最適化しないことはよく知られた格言ですが、Pythonのメモリ使用量の測定に関するチュートリアルはほとんどなく、Djangoに固有のものはありません。 皆様のご協力に感謝しますが、この質問はまだオープンだと思います! 別の最終編集;-) 私はdjango-usersリストでこれを尋ね、いくつかの非常に役立つ返信を得ました 正直なところ、これまでの最後の更新! これはリリースされたばかりです。:まだ最善の解決策かもしれないPymplerでのプロファイリングDjangoのオブジェクトのサイズやメモリ使用量




6
Visual Studioは削除されたポインターをどのように処理しますか、そしてその理由は何ですか?
私が読んでいるC ++の本では、delete演算子を使用してポインターが削除されると、ポインターが指している場所のメモリーが「解放」され、上書きされる可能性があると述べています。また、ポインターが再割り当てされるか、またはに設定されるまで、ポインターは同じ場所を指し続けると述べていますNULL。 ただし、Visual Studio 2012では。これはそうではないようです! 例: #include <iostream> using namespace std; int main() { int* ptr = new int; cout << "ptr = " << ptr << endl; delete ptr; cout << "ptr = " << ptr << endl; system("pause"); return 0; } このプログラムをコンパイルして実行すると、次の出力が得られます。 ptr = 0050BC10 ptr = 00008123 …

29
C ++でのメモリリークを回避するための一般的なガイドライン[終了]
現在のところ、この質問は、Q&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 C ++プログラムでメモリをリークしないようにするための一般的なヒントは何ですか?動的に割り当てられたメモリを解放する必要があるのはどのようにすればよいですか?

9
いつ、なぜコンパイラはmalloc / free / new / deleteでメモリを0xCD、0xDDなどに初期化しますか?
コンパイラが、0xCDやなどの特定のパターンでメモリを初期化する場合があることを知ってい0xDDます。私が知りたいのは、いつ、なぜこれが起こるのかということです。 いつ これは使用するコンパイラに固有ですか? やるmalloc/newとfree/deleteこれに関連して同じように動作しますか? プラットフォーム固有ですか? Linuxまたはなどの他のオペレーティングシステムで発生しVxWorksますか? なぜ 私の理解では、これはWin32デバッグ構成でのみ発生し、メモリオーバーランを検出し、コンパイラが例外をキャッチするのに役立ちます。 この初期化がどのように役立つかについて、実用的な例を挙げていただけますか? 割り当て時にメモリを既知のパターンに初期化することをお勧めします(コードコンプリート2で)何かを読んだことを覚えていWin32ます。特定のパターンは割り込みをトリガーし、デバッガーに例外が表示されます。 これはどれほどポータブルですか?

4
Pythonでのメモリの解放
次の例では、メモリの使用に関していくつか質問があります。 通訳で走れば foo = ['bar' for _ in xrange(10000000)] 私のマシンで使用されている実際のメモリはに達します80.9mb。そして私は・・・それから私は、 del foo 実メモリーはダウンしますが、のみ30.4mbです。インタプリタは4.4mbベースラインを使用するので26mb、OSにメモリを解放しないことの利点は何ですか?それは、Pythonが「前もって計画を立てている」ためであり、それだけ多くのメモリを再び使用する可能性があると考えていますか? なぜそれ50.5mbが特に放出されるのですか- 放出される量は何に基づいていますか? 使用されたすべてのメモリをPythonに強制的に解放させる方法はありますか(それ以上メモリを使用しないことがわかっている場合)? 注 この質問は、Pythonでメモリを明示的に解放する方法とは異なりますか? この質問は、インタプリタがガベージコレクションを介してオブジェクトを解放した後でも(使用のgc.collect有無にかかわらず)、ベースラインからのメモリ使用量の増加を主に扱っているためです。

12
削除してもポインタがNULLに設定されないのはなぜですか?
削除後のポインタのNULLへの自動設定が標準の一部ではないのはなぜかといつも疑問に思いました。これが処理されれば、無効なポインタによるクラッシュの多くは発生しません。しかし、標準がこれを制限していたいくつかの理由を考えることができると言いましたが: パフォーマンス: 追加の命令により、deleteパフォーマンスが低下する可能性があります。 constポインタのせいかもしれません。 そして、スタンダードはこの特別なケースのために何かをしたかもしれません。 これを許可しない正確な理由を誰かが知っていますか?

2
Haskellデータ型のメモリフットプリント
Haskellにデータタイプの値を格納するために必要な実際のメモリ容量を見つけるにはどうすればよいですか(主にGHCを使用)。実行時に(GHCiなどで)評価することは可能ですか、それともそのコンポーネントから複合データ型のメモリ要件を見積もることは可能ですか? 一般的に、タイプのメモリ要件場合aとb知られている、などの代数データ型のメモリオーバーヘッドは何です。 data Uno = Uno a data Due = Due a b たとえば、これらの値が占めるメモリ内のバイト数は? 1 :: Int8 1 :: Integer 2^100 :: Integer \x -> x + 1 (1 :: Int8, 2 :: Int8) [1] :: [Int8] Just (1 :: Int8) Nothing ガベージコレクションの遅延により、実際のメモリ割り当てが高くなることを理解しています。遅延評価のために大きく異なる場合があります(サンクサイズは値のサイズとは関係ありません)。問題は、データ型が与えられた場合、完全に評価されたときにその値がどれだけのメモリを消費するかということです。 :set +sGHCiにはメモリ統計を表示するオプションがあることがわかりましたが、単一の値のメモリフットプリントを推定する方法は明確ではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.