問題タブ [stack-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.
hibernate - 休止状態 - スタック上またはヒープ上?
Java プログラマーは、通常、2 つの真実をポケットに入れています。
- インスタンス変数とオブジェクトはヒープ上にあります。
- ローカル変数とメソッドはスタックにあります。
あらゆることに Hibernate を使用するようになった今、自分自身に自信がないことに気づきました。
休止状態を使用し、メモリがどこにあるかを知るための経験則はありますか?
memory-management - ガベージ コレクタは、スタック メモリ、ヒープ メモリ、またはその両方を収集しますか?
私はガベージ コレクションに関する多くの記事を読みましたが、ほとんどすべての記事がヒープ メモリについて述べています。だから私の質問は「ガベージコレクションはスタックメモリまたはヒープメモリ、またはその両方を収集します」です。
c - 多次元配列はメモリ内でどのようにフォーマットされますか?
C では、次のコードを使用してヒープに 2 次元配列を動的に割り当てることができることを知っています。
明らかに、これは実際には一連の個別の 1 次元整数配列へのポインターの 1 次元配列を作成し、「システム」は私が要求したときに私が何を意味するかを理解できます。
しかし、次の行のように、2D 配列を静的に宣言すると...:
...同様の構造がスタック上に作成されますか、それとも完全に別の形式ですか? (つまり、ポインタの 1D 配列ですか?そうでない場合、それは何ですか?また、それへの参照はどのように理解されますか?)
また、私が「システム」と言ったとき、それを理解するのに実際に責任があるのは何ですか? カーネル?それとも、C コンパイラはコンパイル中にそれを整理しますか?
c# - クラスのフィールドは、スタックまたはヒープに格納されますか?
昨日、(私にとって)別の質問を提起した質問を見ました。次のコードを見てください。
または、Class1 のインスタンスを作成するときに、そのフィールド タイプもヒープ上に作成されますか? しかし、ほとんどの場合、フィールドを使用するためにオブジェクトのインスタンスを作成する必要があるため、実際にいつスタックにあるのかわかりません。
c++ - Linuxのプロセスのスタックサイズに制限はありますか?
Linuxのプロセスのスタックサイズに制限はありますか?それは単にマシンのRAMに依存しているのでしょうか?
関数への再帰呼び出しの深さを制限するために、これを知りたいです。
pointers - 現在のプロセスのヒープの開始アドレスを取得していますか?
私はシステムの下位レベルの仕組みを調査しておりmalloc
、ヒープの開始アドレスをどのように決定するのか疑問に思っていました。ヒープは一定のオフセットにありますか、それとも開始アドレスを取得するための何らかの呼び出しがありますか? スタックはヒープの開始アドレスに影響しますか?
c - スタックメモリに制限はありますか?
私はスレッドの1つを通過していました。関数内でローカルに 10^6 の配列を宣言したため、プログラムがクラッシュしました。
与えられた理由は、スタックでのメモリ割り当ての失敗がクラッシュにつながるためです。
同じ配列がグローバルに宣言された場合、うまく機能しました(ヒープ上のメモリが保存されました)。
ここで、スタックが下向きに成長し、上向きにヒープするとします。
我々は持っています:
- -スタック - -
-------------------
- -ヒープ - -
今、スタックでの割り当てに失敗した場合、ヒープでも失敗するはずだと思います。
だから私の質問は: スタックサイズに制限はありますか? (制限を超えると、プログラムがクラッシュしました)。または、何か不足していますか?
android - Androidのスタックメモリ
フォアグラウンドサービス、コンテンツプロバイダー、およびサービスにバインドしてAIDLを使用してオブジェクトのリストを取得するアクティビティフロントエンドを備えたアプリを作成しています。このサービスは機能し、データベースを更新します。
アクティビティを4〜8時間以上開いたままにして、電話(Nexus One)の設定の下にある[サービスの実行]セクションに移動すると、異常に大量のメモリが使用されていることが示されます(〜42MB)。
漏れがあると思います。ヒープメモリを確認すると、ヒープサイズが取得されます:〜18MB、〜2MBが割り当てられ、〜16MBが解放されます。Eclipse MATでhprofを分析することは問題ないように思われます。これにより、スタックでメモリがリークしていると理論化できます。これも可能ですか?もしそうなら、リークを停止または調査するために何ができますか?androidの「RunningServices」セクションで報告されたメモリ使用量は正しいですか(私はそうだと思います)?
別の注意:UIが起動していない場合(サービスのみが実行されている場合)、この問題を再現できませんでした
c++ - ヒープ/スタック上のクラス メンバーの割り当て?
クラスが次のように宣言されている場合:
そして、それは次のように行うことができます:
クラスはどのようにヒープに割り当てMyClass * Mine = new MyClass();
られますか? 割り当てられたメモリは、クラスのインスタンス化と共に 2 番目の例で 250 バイトも割り当てますか? また、メンバーは MyClass オブジェクトの存続期間全体にわたって有効ですか? 最初の例については、クラス メンバーをヒープに割り当てるのは実用的ですか?
c++ - ヒープ割り当てメモリによるスレッド セーフ
私はこれを読んでいました: http://en.wikipedia.org/wiki/Thread_safety
次の関数はスレッドセーフですか?
この記事では、スレッドセーフにするためにスタックからの変数のみを使用できると述べています。本当に?なんで?上記の関数の後続の呼び出しは、メモリを別の場所に割り当てませんか?
編集:ああ。記事のこの部分を読み間違えたようです。
サブルーチンは再入可能であるため、スレッドセーフです。
- 使用する変数はスタックからのものだけです
(という意味にとった
サブルーチンは再入可能であり、したがってスレッドセーフです。
- 使用する変数はスタックからのものだけです
、以下の回答によると、そうではありません)