1 MBのスタックサイズを持つ通常の64ビットホットスポットJVMがあります。今、私は3022の親の階層を持つオブジェクトをシリアル化しようとしていましたが、これは私にSO(皮肉)例外を与えています。JVMのスタックサイズの仕様
ここにいくつかのコードです:
while(epc.getParent()!=null){
epc=epc.getParent();
count++;
}
print(count);//3022
上記のコードは、単に階層を伝えることですが、私はObjectOutputStreamの上にepc
オブジェクトをシリアル化しようとすると、実際の問題が発生します。
質問スタックフレームのサイズがわからないので、JVMで1 MBのスタックサイズとは何ですか? -Xss3000kでコードを正常に実行したため、1スタックフレームあたり1KBではないと確信しています。
もう1つの質問ですが、-Xss3000kのJVMオプションを設定すると、すべてのスレッドに3000kのスタックサイズがありますか?
「JVMの1 MBのスタックサイズの状態は何ですか?」について詳しく説明してください。それはあまり明確ではありません。 –
そのコードは、多くのスタックスペースを消費するようには見えません。 'getParent()'はどのように機能しますか? 「オブジェクトを直列化する」とは、「ObjectOutputStreamに書き込む」という意味ですか? – Thilo
@RazvanManolescu親の階層が3022の親を持つオブジェクトの直列化を1 MBで処理できるかどうかを知りたいですか? –