In Javaオブジェクトは静的メモリ割り当てと動的メモリ割り当ての両方で作成できますか?Javaでは、静的メモリ割り当てと動的メモリ割り当ての両方でオブジェクトを作成できますか?
答えて
スタティックメモリの場合、スタック上にあることを意味します。いいえ、すべてのオブジェクトがヒープに割り当てられます。スタックにはプリミティブのみが割り当てられます。
編集:ダイナミックで静的な意味ではそれぞれヒープとスタックを意味するのかどうかはまだ分かりませんが、C/C++バックグラウンドを持つ人の質問がどこにあるのですか?それ以上。 Javaでは
、あなたは典型的な操作を行うとき:ヒープ上にメモリを割り当てます
Object o = new Object();
。あなたがメソッド内の場合:
int i = 1;
その後、そのint型は、(それがクラス内のフィールドであれば、それはヒープに割り当てられます)、スタック上に割り当てられています。
静的割り当てと動的割り当ての両方の例を挙げてください。 –
すべてのインスタンスメモリ(newを呼び出すことによって)がヒープに割り当てられ、すべてのパラメータがスタックに割り当てられます。しかし、java(非プリミティブ)パラメータはすべて参照(例外プリミティブ)によって渡されます。
Javaでは、すべてのパラメータが値渡しされます。 –
すべてのインスタンスは、インスタンスへのポインタのような参照によって渡されます。つまり、ポインタは値渡しですが、渡されたオブジェクトのメソッドを呼び出すと元のオブジェクトに変更されます –
Javaは常に値渡しであり、オブジェクト参照も値渡しとなります(Javaオブジェクトでは常に参照によってアクセスされる)。これは、参照渡しとはまったく異なります。 http:// stackoverflow。com/questions/40480/is-java-pass-by-reference –
非プリミティブが常にヒープに割り当てられているという主張は、間違っています。
JVMはを実行して、オブジェクトが常に1つのスレッドに限定されているかどうか、およびオブジェクトの存続期間が特定のスタックフレームの有効期間によって制限されているかどうかを判断できます。スタック上にオブジェクトを割り当てることができると判断できる場合は、JVMがそこにオブジェクトを割り当てることができます。
詳細はthis articleを参照してください。
Java 6u14(-XX:+ DoEscapeAnalysisが有効な場合)は、スタック割り当てではなくスカラー置換のエスケープ解析を使用します。オブジェクトは*決してスタックには割り当てられませんが、そのフィールドはインライン展開され、ローカル変数として扱われます。 http://java.sun.com/javase/6/webnotes/6u14.htmlを参照してください。 –
「スタティック」は「スタック上に」という意味ではありません。
クラス静的変数の初期化で割り当てられたオブジェクトまたはstatic code blocksは、クラスロード時に割り振りが行われるという意味で静的に割り当てられます(プログラムの起動直後に静的に発生するようにすることができます)。
理論的には、そのような割り当てだけを使ってJavaプログラムを書くことができます。statically allocated、これはmallocとはまったく同じCプログラムと同じです。
このようなプログラムが正常に起動すると、実行できるすべてのメモリがあることが証明され、メモリ不足エラー、フラグメンテーションの問題、またはGCの一時停止が発生しません。
正しく書かれていれば、「それはできません」というエラーメッセージが返されます。
- 1. C++の動的割り当てメモリ内での動的メモリ割り当て
- 2. 自動/静的なメモリ割り当て
- 3. Java動的メモリ割り当て
- 4. Cでの動的メモリ割り当て
- 5. 静的データ型のメモリ割り当て
- 6. ネットワークI/OとC++用のバッファの動的なメモリ割り当てと静的なメモリの割り当て
- 7. KVMの動的メモリ割り当て
- 8. C++でのオブジェクトの静的および動的メモリ割り当て
- 9. 静的対動的CUDA共有メモリ割り当てのパフォーマンス
- 10. 動的割り当て - メモリ管理
- 11. realloc、動的メモリ割り当て
- 12. 2D動的メモリ割り当て - ObjectiveC
- 13. C++動的メモリ割り当て
- 14. ツリーアルゴリズムにおけるメモリの動的割り当てと再割り当て
- 15. 静的TLSブロックでメモリを割り当てることができません
- 16. 静的割り当てと動的割り当てとの比較自動割り当て
- 17. Pythonでメモリを動的に割り当てる方法
- 18. メモリの割り当て/割り当て解除(WindowsではC++)
- 19. メモリ割り当て
- 20. 割り当てメモリ
- 21. 割り当てメモリ
- 22. メモリ割り当て
- 23. メモリ割り当て
- 24. 割り当てメモリ**
- 25. 一時的なメモリ割り当てとは何ですか?
- 26. 動的にメモリを割り当てるときのアクセス違反
- 27. Javaクラスは、動的なメモリ割り当て
- 28. Python:配列の作成は自動的にメモリを割り当てますか?
- 29. ベクトル<>動的割り当ての代わりに静的メモリ
- 30. メモリ割り当てとループ
「静的」および「動的」メモリ割り当ての意味は何ですか? – nos