私は、いくつかの静的定数がWorkerクラスで宣言されているグループプロジェクトに取り組んでいます。このワーカーの複数のスレッドが生成され、Javaアプリケーションは膨大な量のメモリを使用しているようです。私はこれがこれらの静的定数の多くを割り当てる各スレッドの結果であるかどうか疑問に思っていますが、わかりません。スレッド時にJava静的フィールドが複数回割り当てられますか?
答えて
いいえ、ClassLoaderごとに静的変数のインスタンスが1つしかありません。
public class Foo {
// only 1 of these
private static int bar = 10;
}
ただし、値が自動的に同期されているわけではありません。スレッドがこの値を変更している場合は、にする必要があります。そうしないと、競合状態によって異なる値が表示される可能性があります。
これらの変数は最終的なものなので、私はそれについて心配していません。私は、これは異なる記憶問題を暗示していると思います。 –
@ダンキューそれは後世のためだとは思わなかった。 – Gray
スタティック変数は、スレッド数に応じて割り当てられたではなく、です。代わりに、静的変数はClassLoader内で1回割り当てられます。
"膨大な"量のメモリを使用している場合など。多くのGB、私はメモリプロファイラーを使用して、原因が何であるかを見つけて、可能ならば修正します。数百MBを使用している場合、これが問題であることがわかっていない限り、私はそれについて心配しません。
- 1. Java静的変数にNULL値が割り当てられています
- 2. NSThreadを割り当ててからスレッドにinitWithTargetを複数回割り当てても安全ですか?
- 3. コードデザイン、静的定数の割り当て
- 4. C++静的に割り当てられたダブルエンドキュー実装
- 5. 静的に割り当てられたnsarrayの解放
- 6. Magentoカスタム変数/静的ブロックが特定のバックエンドユーザーに割り当てられていますか?
- 7. Flyweightパターンで静的インスタンスを静的インスタンスに割り当てる
- 8. 静的に割り当てられた配列へのアクセスVSへの静的に割り当てられた配列へのポインタによるアクセス
- 9. 静的配列バッファの割り当て
- 10. 自動/静的なメモリ割り当て
- 11. 静的割り当てと動的割り当てとの比較自動割り当て
- 12. 割り当てクリックイベントハンドラはクリックイベントが複数回
- 13. 静的クラスを変数に割り当てることはできますか?
- 14. .netの非静的クラスの静的変数のメモリ割り当て
- 15. 割り当て時に&&は何を意味しますか? JAVA
- 16. Python静的変数割り当て解除
- 17. 動的に割り当てられた構造体を再割り当て
- 18. クラスメンバ関数内の静的ローカルは、クラスの再割り当て時に存続しますか?
- 19. すでに割り当てられている変数にメモリを割り当てていますか?
- 20. 静的メンバーは割り当てられた値を保持しません
- 21. 使用して、両方の動的に割り当てられたと静的に割り当てられた共有メモリ
- 22. CUDAスレッド割り当て
- 23. 静的に割り当てられたchar配列のC - memset segfault
- 24. グローバル変数に値が割り当てられません
- 25. メモリページにヒープが割り当てられていますか?
- 26. IIS7スレッドはどのように割り当てられますか?
- 27. 起動時にメモリが割り当てられる
- 28. 静的変数に関連してメモリが割り当て解除されるのはいつですか?
- 29. 静的データ属性をエムバービューにどのように割り当てますか?
- 30. MySQLフィールドに数字の範囲を割り当てます
単なるアイデアです。古くなった古いクラスのインスタンスが残っているため、ホットデプロイメントに問題が生じる可能性があります。アプリケーションサーバーを再起動すると、これが表示されます。 –
@MikeBaranczakプログラミングでは、「変数」はしばしば、名前の変化した量が変化するかどうかを表します。 cplusplus.comでは、変数は次のように定義されます。["変数を定義された値を格納するメモリの一部として定義できます"](http://www.cplusplus.com/doc/tutorial/variables/)..何かが変わるかどうかについては何も言いません。意味論的に言えば、英語では変数か定数のどちらかですが、プログラミング用語では "定数変数"と言うのは擬態語ではありません。 – Kiril