メモリ管ç†

概è¦

プログラムã§ä½¿ç”¨ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ã‚„コードã¯ç¨®é¡žã«å¿œã˜ã¦ä»¥ä¸‹ã®é ˜åŸŸã«åˆ†ã‘ã¦ä¿å­˜ã•れる。
memory_management

Permanent領域

クラス情報

ロードã—ãŸãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ç­‰ã®ã‚¯ãƒ©ã‚¹ãƒ•ァイルãŒä¿å­˜ã•れる。
JAVAç­‰ã§ã¯ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã«å¤‰æ›ã•れる。

staticメンãƒãƒ¼

クラスã®ãƒ‡ãƒ¼ã‚¿ã®å†…ã€staticã§å®£è¨€ã•れãŸå¤‰æ•°ã¯ã“ã“ã«ä¿å­˜ã•れる。
インスタンス変数ã¯ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹æ¯Žã«å€¤ãŒç•°ãªã‚‹ãŒã€
static変数ã¯ã‚¯ãƒ©ã‚¹ã«ä»˜ã共用ã§ï¼‘ã¤ã€‚

スタック領域

ローカル変数

メソッド内ã§å®£è¨€ã•れる変数ã¯ã“ã“ã«ä¿å­˜ã•れる。
メソッドã®å‡¦ç†ãŒçµ‚了ã™ã‚‹ã¨åˆ¥ã®ãƒ¡ã‚½ãƒƒãƒ‰ã«ä¸Šæ›¸ãã•れる。

メソッド呼ã³å‡ºã—æ™‚ã®æˆ»ã‚Šã‚¢ãƒ‰ãƒ¬ã‚¹

メソッドã‹ã‚‰åˆ¥ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã™éš›ã«æˆ»ã‚Šå…ˆã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’ã“ã“ã«ä¿å­˜ã—ã¦ãŠã。
メソッドã®å‡¦ç†ãŒçµ‚了ã™ã‚‹ã¨åˆ¥ã®ãƒ‡ãƒ¼ã‚¿ã«ä¸Šæ›¸ãã•れる。

ヒープ領域

インスタンス

インスタンスを作æˆã™ã‚‹æ¯Žã«ã“ã“ã«ä¿å­˜ã•れる。
å‚ç…§ãŒçµ‚了ã™ã‚‹ã¨ã‚¬ãƒ™ãƒ¼ã‚¸ã‚³ãƒ¬ã‚¯ã‚¿ã®æ¶ˆåŽ»ã®å¯¾è±¡ã¨ãªã‚‹ã€‚
動的メモリ割り当ã¦
クラスã€é…列ã€å¯å¤‰é•·æ–‡å­—列型等ã€
使用ã™ã‚‹ãƒ¡ãƒ¢ãƒªã‚µã‚¤ã‚ºãŒäº‹å‰ã«åˆ†ã‹ã‚‰ãªã„å ´åˆã®ãƒ¡ãƒ¢ãƒªé ˜åŸŸã®ç¢ºä¿æ–¹å¼ã€‚
ヒープ領域ã«å¤§ãã‚ã®ã‚µã‚¤ã‚ºã‚’確ä¿ã—ã¦å‰²ã‚Šå½“ã¦ã‚‹ã€‚
変数ã®ä½¿ç”¨ãŒçµ‚ã‚ã£ãŸå ´åˆã«è‡ªåˆ†ã§è§£æ”¾å‡¦ç†ã‚’行ã†å¿…è¦ãŒã‚る。
解放ã—ãªã„å ´åˆã€ãƒ—ロセスãŒçµ‚了ã™ã‚‹ã¾ã§ãã®é ˜åŸŸã‚’使用ã™ã‚‹äº‹ã¯ã§ããšã€
コンピューター全体ã®ä½¿ç”¨å¯èƒ½ãªãƒ¡ãƒ¢ãƒªé ˜åŸŸãŒå¾ã€…ã«æ¸›å°‘ã—ã€æœ€çµ‚çš„ã«ã‚·ã‚¹ãƒ†ãƒ ãƒ€ã‚¦ãƒ³ã™ã‚‹(ï¼ãƒ¡ãƒ¢ãƒªãƒªãƒ¼ã‚¯)。
「^ã€ï¼šãƒ’ープ領域ã«ä¿å­˜ã™ã‚‹(C++)
System::String^ msg;

アップキャスト時ã®å‹•作

memory_upcast

ダウンキャスト時ã®å‹•作

memory_downcast

ヒープ領域内ã®ã‚ªãƒ–ジェクト移動(Java)

memory_downcast
Fromã€To領域をåˆã‚ã›ã¦Survivor(生存者)領域ã¨å‘¼ã¶

(1)Eden領域
インスタンスã¯Eden領域ã«ä½œæˆã•れる
(2)From領域
Eden領域ãŒä¸€æ¯ã«ãªã‚‹ã¨ScavengeGCã«ã‚ˆã‚Šã€From領域ã«ç§»å‹•ã•れる
(3)To領域
From領域ãŒä¸€æ¯ã«ãªã‚‹ã¨ScavengeGCã«ã‚ˆã‚Šã€å†åº¦From領域ã«ç§»å‹•ã•れる
(4)Old領域
From~To領域ã®ç§»å‹•ãŒè¦å®šå›žæ•°ã‚’è¶…ãˆã‚‹ã¨ScavengeGCã«ã‚ˆã‚Šã€Old領域ã«ç§»å‹•ã•れる
è¦å®šå›žæ•°ï¼šMaxTenuringThreshold値(デフォルト:32回)
ScavengeGCã®å‡¦ç†å›žæ•°ãŒå¢—ãˆã‚‹ç¨‹ã€ãƒ—ログラムã®å‹•作ã¯é…ããªã‚‹
ScavengeGCã®å‡¦ç†å›žæ•°ã‚’減らã™ã«ã¯å®Ÿè¡Œæ™‚ã®ãƒãƒ¥ãƒ¼ãƒ‹ãƒ³ã‚°ãŒå¿…è¦

パラメータ æ„味 è¦å®šå€¤ 最大値
-Xms ãƒ’ãƒ¼ãƒ—å…¨ä½“åˆæœŸå€¤ 6656k
-Xmx ヒープ全体最大値
-XX:NewSize Newé ˜åŸŸåˆæœŸå€¤ calculated
-XX:MaxNewSize New領域最大値
-XX:PermSize Permanenté ˜åŸŸåˆæœŸå€¤
-XX:MaxPermSize Permanent領域最大値
-XX:NewRatio New領域ã¨Oldé ˜åŸŸã®æ¯”率 2
-XX:SurvivorRatio New領域ã¨Survivoré ˜åŸŸã®æ¯”率 8

例
java ~
 -Xms2048m
 -Xmx2048m
 -XX:NewSize=128m
 -XX:MaxNewSize=128m
 -XX:PermSize=64m
 -XX:MaxPermSize=64m
 -XX:NewRatio=2
 -XX:SurvivorRatio=8

Follow me!