skillup

技術ブログ

プログラミング全般

メモリに関して 静的領域、スタック、ヒープなど

投稿日:

実務でメモリの調査をしましたが、肝心のメモリについてほとんどわかっていないのでメモ。

メモリの領域を大きく分けると静的、スタック、ヒープに別れる。

静的

  • 読んで字のごとく、プログラムが開始されて、終了するまで固定的な領域。
  • グローバル変数やコード自体などはここに格納される。全アプリケーション共通の領域。

スタック

  • メソッドが逐一実行される時に使われる領域。
  • スタックという文字の通り、実行される場合はこの領域に、格納され、終わるとここから取り除かれる。1スレッドで1つの領域が使われる。
  • 特定のスコープのみに対して使用されるため、メモリ管理がしやすい反面、大きいデータの格納には向いていない。
  • 値型はここに格納される。
  • オブジェクトのデータはポインタがここに格納され、実データは後述するヒープ領域で管理される。

メモリ管理

ヒープ

  • 開始時に一定領域確保され、必要の都度アプリケーションに割り当てられる。
  • 大きいデータ、スコープがはっきりしないもの、サイズが動的なデータなどの格納に向いている。
  • 領域が動的な代わりに少し遅い。
  • 全アプリケーションで1つ。
  • クラスの実態はこの領域に実データが格納される。
  • 下記記リンクの説明は実データとポインタのイメージが掴みやすい。
    オブジェクト指向講座 スタック領域とヒープ領域

以前やった時よりはイメージがしやすくなったかな・・・

基本的にはスタックで随時データを管理し、自由度の高いヒープを都度使うというかんじ。

色々調べたけれど、実例と図解が使ってあるものはわかりやすく、言葉だけで説明しようとしているものは読む気にならない(汗)自分が説明する時に参考になる。

その他参考になったリンクや書籍など

オブジェクト指向でなぜ作るのか

スタックメモリとヒープメモリ

 

-プログラミング全般

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

プログラミングを習得するときに必要な2つの大事なこと

元々私は塾で仕事をしていましたが、いろいろ紆余曲折ありましていまではWEBエンジニアとして仕事をしております。 エンジニアとしてのキャリアは3年ぐらいなので正直あまりないのですが、開発者と平行してプロ …

no image

Simple Factoryパターンについて

今回はデザインパターンの一種であるSimple Factoryパターンに関して。 Contents1 Simple Factoryパターンとは2 サンプルコード3 解説 Simple Factoryパ …

no image

オブジェクト指向について その2

前回のエントリーのように、データとロジックを一体で考えるのは、処理状の有効性のみならず、よりユーザー側に近い処理をかくということにもつながります。 日付の問題に関してもintやshortよりはLoca …

no image

マイクロサービスについて

マイクロサービスについて勉強したので少しメモを。 参考文献 Software Design 「2020年1月」 Contents1 マイクロサービスとは?1.1 具体例1.1.1 フロントエンドとバッ …

no image

OSコマンドインジェクション

Contents1 OSコマンドインジェクションとは?2 被害3 対策4 参考リンク OSコマンドインジェクションとは? OSに対する命令文を不正に紛れ込ませて攻撃させる手法。 被害 サーバー内のファ …