program study story

プログラムの勉強 アウトプット

IT_ボックス化について

スタックとヒープとは簡単に:

スタック・ヒープというメモリの管理方法があり、
値型の領域がスタック、参照型の領域がヒープになっている。
値型をobject型に代入できるが、値型(スタック上に値がある)から参照型(ヒープ上に値がある)
への変換が行われます。
これをボックス化という。
-------------------------------------------------------------
この逆に、ボックス化したobjectから、元の型にキャストすると、
ボックス化解除処理がかかる。
int x=5;
object y=x;  // intをobjectに。ボックス化が起きる。
int z = (int)y;  // objectから元の型に。ボックス化解除。
-------------------------------------------------------------
ボックス化を避けるには
ピープ上の領域確保は、スタックと比べると重たい処理。
値型の利点はスタック上に値を置く(= ヒープを使わない)ことによる性能向上
対策としては、具体的な型をできる限り指定するだけでボックス化は回避できる。
例:
 値型をobjectで受け取るのをやめる。