問題タブ [heap-memory]
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.
memory - 変更可能な状態値がヒープから解放されるのはいつですか?
F# WikiBook のEncapsulating Mutable Stateセクションには、次のコード スニペットがあります。
最初は、変更可能な値が呼び出されるたびにcounter
インクリメントされるという事実を飲み込むのは簡単に思えました。incr
しかし、しばらく考えた後、私が理解できなかったのは、いつcounter
ヒープから解放され、counter
インクリメントされる前に以前の値をどのように参照しているのかということでした。counter
関数スコープ内での生活は、incr
複数の関数呼び出しを通じてどのように生き残るのでしょうか?
主な質問は次のとおりです。
- いつ
counter
ヒープから解放されますか? counter
メモリリークじゃない?
java - Eclipse でヒープ (ファイルへのダンプ) を保存するにはどうすればよいですか?
MyEclipse から GA/AI を実行またはデバッグすると、次のエラーが発生します。
スレッド「メイン」の例外 java.lang.OutOfMemoryError: Java ヒープ領域
eclipse.ini は次のようになります。
MyEclipse は次のように呼び出されます。
これからVM設定を上げます:
効果はありませんでした。だから私はヒープをファイルにダンプするようにしようとしていますが、これらを配置しています:
プログラムの引数は効果がありませんでした。より多くのメモリ使用量の分析で何かを動作させるにはどうすればよいですか? たとえば、jstack は現在、Windows プラットフォームでは使用できません。SendSignal を使用しても、目に見える効果はありません。
c - malloc() と free() は割り当てられたサイズとアドレスをどこに保存しますか?
割り当てられたアドレスとそのサイズはどこmalloc()
に保存されますか (Linux GCC)? free()
一部の実装では、実際に割り当てられたメモリの前にそれらを保存することを読みましたが、テストでは確認できませんでした。
背景、おそらく誰かがこれについて別のヒントを持っています:
他のプロセスの文字列の現在の値を判断するために、プロセスのヒープメモリを分析して少し実験しています。プロセス ヒープ メモリへのアクセスとその中の探索は問題ありません。ただし、文字列の値が変更され、プロセスがメモリの新しい部分を毎回割り当てるため、文字列のアドレスが変更されます。文字列の形式は固定されているため、簡単に見つけることができますが、いくつかの変更を加えた後でも、古いバージョンの文字列がヒープ メモリに残っているため (おそらく解放されますが、再利用/上書きはされません)、そのため、私にはわかりません。現在の文字列はどれですか。
したがって、現在のものを引き続き見つけるために、メモリ内で見つけた文字列がまだ使用されているかどうかを、そのアドレスとアドレスを比較して確認し、知りたいと考えていmalloc()
ますfree()
。
チャオ、エルマー
java - JVM が Xms の値で開始されるようにする方法
3G の開始ヒープ サイズ (-Xms3072m VM 引数で設定) で Java プログラムを実行すると、JVM はそのサイズで開始しません。400m 程度から開始し、必要に応じてさらにメモリを取得し続けます。
これは私にとって深刻な問題です。しばらくすると、JVMが上記の量を必要とすることを私は知っています。また、必要に応じて JVM のメモリが増加すると、速度が低下します。JVM がより多くのメモリを取得する間、かなりの時間がガベージ コレクションに費やされます。そして、メモリの獲得は高価な作業だと思います。
JVM が実際に開始ヒープ サイズ パラメータを尊重していることを確認するにはどうすればよいですか?
更新:このアプリケーションは多くのオブジェクトを作成しますが、そのほとんどはすぐに死んでしまいます。結果として得られるオブジェクトの一部は、メモリ内に保持する必要があります (若いヒープから転送されます)。この操作中、これらのオブジェクトはすべてメモリ内にある必要があります。操作後、若いヒープ内のすべてのオブジェクトが正常に要求されていることがわかります。したがって、メモリリークはありません。
ヒープサイズが 3G に達すると、同じ操作がスムーズに実行されます。これは、必要な余分な時間がメモリの取得に費やされていることを明確に示しています。
このSun JDK 5.
winapi - VirtualAllocとHeapAllocの違いは何ですか?
、、、などVirtualAlloc
、 Windows環境でメモリを割り当てる方法はたくさんあります。HeapAlloc
malloc
new
したがって、それらの違いは何ですか?
java - スタックまたはヒープのどこに変数参照が割り当てられていますか?
質問があります
たとえば、メソッド内で変数を宣言するとどうなりますか。
myShip 参照は、スタックまたはヒープのどこに割り当てられますか?
私はスタックで考えていますが、J2MEゲームプログラミングの本「JavaクラスはJavaヒープにインスタンス化されています」を読んでいたので混乱しています
すべての Java クラス ?
前もって感謝します
java - Javaヒープサイズを永続的に増やしますか?
自分のコンピューターでjvmのデフォルトのヒープサイズを設定する方法はありますか?デフォルトのjvmサイズで常に超過ポイントに達するカスタムプログラムを常に実行しているため、1gに設定したいと思います。
コマンドラインからJavaアプリを実行するたびに-XmX1gと入力することを覚えておく必要はありません...
これを正しく行うには、管理者の方法が必要ですか?
c++ - C ++でのchar *の割り当てと解放
みなさん、ヒープ破損エラーが発生しています。わかりません。
上記のコードは、_gcvt_s と pushFont() で c ポインターを使用する唯一の時間です。これは、char * を最初のパラメーターとして単純に受け入れ、テキストを画面に表示します。それ以外はcを使用しません。メイン ループの後で c を解放しようとすると (そうすべきだと思います)、Visual Studio がヒープでエラーを取得した (ヒープの破損) というエラーが表示されます。
pushFont への呼び出しをコメントアウトしても、まだエラーが発生します。
文字 (ヒープに割り当てた 1 バイト) を解放するとヒープが破損する理由を誰かに説明してもらえますか?
最後に、私のメイン ループは多くのことを行います。バディと私は WinSocket でピンポン ゲームを作成しています。本体の残りの部分はゲームのループです。投稿する必要があるとは思いませんでしたが、必要に応じてメインループ全体で投稿を更新しますが、malloc() と free() の理解が不十分だと思います。
皆さんありがとう、
c++ - ヒープを削除してから、そのメモリへのポインターを逆参照する
これは演習のコードです:
ヒープ上の int に割り当てられた領域が削除されると、ポインタを逆参照すると何らかのメモリ エラーが発生するのではないかと考えました。代わりに、0 を返します。
どうしてこれなの?
c++ - ヒープ上にオブジェクトを作成するために必要なオブジェクトのサイズはありますか?
コンパイラがC(クラス)オブジェクトのサイズを知る必要がある場合:たとえば、スタックにCを割り当てる場合、または別のタイプの直接保持メンバーとして
C ++コーディング標準から:101のルール、ガイドライン、およびベストプラクティス
これは、ヒープに割り当てられたオブジェクトの場合、サイズは必要ないということですか?