博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
程序在内存中的执行过程-1
阅读量:5076 次
发布时间:2019-06-12

本文共 1018 字,大约阅读时间需要 3 分钟。

  学习Java,比较重要的一个思想就是分析内存中程序执行的过程。

  废话不多说,我们首先要知道的是程序比如我们编写的.java程序,存放的位置是在硬盘的某一个区域中,如果不执行这个程序,那么它就默默地存在,不起任何作用。当我们开始执行某一个程序时,程序首先要做的事就是把自己也就是代码,全部load或者说装载到内存区域中去。然后Windows本身的系统代码会找到自己编写的程序代码的main方法,从main方法开始执行程序。第三,当这个程序开始执行之后,程序中的所有数据会被内存分类管理起来,一般来说内存管理最基础的会分成四部分:code segment(存放代码)、data segment(存放静态变量和字符串常量)、stack(存放局部变量)、heap(存放new 出来的东西)。

  真正执行的时候,代码首先会被放在code segment中,OS(操作系统)找到相关的main方法后,才开始执行后面的代码。

  现在,我用一个简单的例子程序来说明一下:

public class practic1 {

  public static void main(String[] args) {//当OS找到main 方法,开始执行后面的代码
    int a = 123;//声明一个变量a,a是在main方法中声明的,所以是个局部变量也是一个基本类型的变量,赋给它的值123会存放在stack区域中。
    double b = 3.1415;//同上
    String c = "Hello World";//声明一个变量c,c也是在main 方法中声明的,但是定义c这个变量的是一个字符串型,它是引用类型的变量,所以赋给它的值会存放在heap区域中,c本身是存放在stack区域中,它本身保存的其实是它的值在heap区域中的首地址。
    System.out.println("" + a + b + c);//现在要打印输出这几个变量的值,a和b都是存放在stack区域中,所以程序会从这个区域中去调用它们的值。调用c的时候,是调用的c保存的地址所指向heap区域中的内容。
  }
}

  因为学习进度的原因,目前就说这么多,后面还会持续更新这一主题的内容。如果觉得有用,请动手点个赞,不喜勿喷!

转载于:https://www.cnblogs.com/maopao55555/p/6083626.html

你可能感兴趣的文章
docker固定IP地址重启不变
查看>>
桌面图标修复||桌面图标不正常
查看>>
JavaScript基础(四)关于对象及JSON
查看>>
JAVA面试常见问题之Redis篇
查看>>
jdk1.8 api 下载
查看>>
getElement的几中属性介绍
查看>>
HTML列表,表格与媒体元素
查看>>
雨林木风 GHOST_XP SP3 快速装机版YN12.08
查看>>
数据结构3——浅谈zkw线段树
查看>>
Introduction to my galaxy engine 2: Depth of field
查看>>
设计器 和后台代码的转换 快捷键
查看>>
STL容器之vector
查看>>
数据中心虚拟化技术
查看>>
复习文件操作
查看>>
SQL Server 使用作业设置定时任务之一(转载)
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>
一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(4)--外部项目选取器和业务数据连接...
查看>>