Java程序运行内存机制
Java程序运行内存机制
栈内存包留调用方法、变量的区域,堆内存是new对象的区域,方法区为保存class文件的区域。
程序刚开始时,先加载类文件相应的数据到方法区,然后就从main()方法开始执行。执行main()方法,main()方法入栈,执行phone one = new Phone(),首先Phone one声明一个变量并入栈,然后new Phone()在堆内存申请一块空间,此时,申请的堆内存中保留着类文件中的那些变量;然后,申请区域中的方法则是一快存储着方法地址的区域。然后堆中申请的区域的地址就被赋予给栈内存中声明的变量进行初始化。然后就继续执行one.brand = "苹果";one.price = "8838.0";one.color = "黑色";对声明变量所指向的堆内存中的一些变量进行初始化(更新)。当调用one.call("乔布斯");时,就会去寻找变量one中的方法区域去找相应的方法的地址然后就去方法区里去寻找相应的方法,然后就将one.call()方法进行入栈,并执行。当执行完了后one.call()就从栈空间中弹出栈。然后就继续执行one.sendMessage(),原理类似。当运行到main()方法的结尾大括号时,main函数就执行完成,main函数也弹出栈,程序就执行完成。
下图为当声明一个对象时的调用情况:

下图为声明2个对象时的调用情况:

当声明第二个对象时,与前面说的一样,会在先在栈内存中进行变量的入栈,然后new Phone()会在堆内存内申请一块内存。方法区还是跟原来一样。
下图是将一个对象的值赋给另一个对象的调用情况:

当将两个对象的值赋值给其他对象时,会把该对象在栈内存中申请的内存的地址赋值给新对象,新对象也同时指向该区域,且一个对象对该区域的内容进行更改时,另一个对象也会察觉到。
Java程序运行内存机制的更多相关文章
- Java程序运行机制
Java程序运行机制 编译型(compile) 它有一个负责翻译的程序(编译器),将我们写的 Java 源代码转为计算机可执行的代码 举个例子:把一本中文书翻译成英文书 应用:操作系统.C.C++ 解 ...
- 02 基础 卸载JDK 安装JDK Java程序运行机制
基础 JDK:Java Development Kit(Java开发者工具 包含JRE和JVM) JRE:Java Runtime Environment(java运行时环境,包含JVM) JVM:J ...
- 基础知识《零》---Java程序运行机制及运行过程
Java运行机制 Java虚拟机(Java Virtual Machine):Java虚拟机可以理解成一个以字节码为机器指令的CPU:对于不同的运行平台,有不同的虚拟机:Java虚拟机机制屏蔽了底层运 ...
- Java程序运行机制及开发环境
Java既是编译型语言,又是解释型语言 java源文件首先需要通过javac编译生成后缀名为.class的字节码文件(与平台无关,只面向JVM),然后使用Java虚拟机将字节码解释成特定平台上的机器码 ...
- 1、Java语言概述与开发环境——Java程序运行机制
Java语言是一种特殊的高级语言,它既有解释型语言的特性,也具有编译型语言的特征,因为Java要经过先编译后解释两个步骤. 一.高级语言的运行机制 计算机高级语言按程序的执行方式可以分为编译型和解释型 ...
- 2.Java程序运行机制
1.编译型:compile,把所有东西翻译好,若有更新需要重新全部翻译.执行速度够快,对操作系统要求比较低.开发操作系统时用到编译型语言,例如c/c++...运行时需编译整个程序 2.解释性:运行一个 ...
- 5.Java程序运行机制
一.编译型和解释型语言区别 计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以任何的高级语言编写的程序都必须转换成计算机语言,也就是机器码.而这种转换的方式有两种: 编译 ...
- 【Java】Java_03第一个Java程序
第一个JAVA程序的编写和运行 1.使用记事本编辑 public class Welcome{ public static void main(String[] agrs){ System.out.p ...
- 一、Java语言概述与开发环境、第一个java程序
目录: 1.1 Java特点 1.2 Java程序运行机制 1.3 安装JDl和配置环境变量 1.4 第一个JAVA程序 1.5 第一个JAVA程序的含义 前言 Java语言历时近二十年,已发展成为人 ...
随机推荐
- 2020.5.21 第一篇 Scrum冲刺博客
Team:银河超级无敌舰队 Project:招新通 项目冲刺集合贴:链接 目录 一.Alpha 阶段成员任务安排 二.明日任务安排 三.预期的任务量 四.敏捷开发前的感想 五.团队期望 一.Alpha ...
- 深度学习调参笔记(trick)
1. Adam 学习率0.00035真香: 2. SGD + Momentum 学习率应当找到合适区间,一般远大于Adam (取1,2,5,10这类数据): 3. 提前终止,防止过拟合; 4. Ens ...
- java父类子类代码
import java.util.Scanner;import java.util.*; class PersonF{ public void print(String ID,String Workc ...
- .net core 3.0 web api 重点设置,主要为了解决axios post不到参数问题
这两天研究.net core 3.0升级,前端vue+axios 后端web api.测试过程中发现post的时候,由于提交的是json对象,后端web api获取不到数据. 今天贴了下解决过程.主要 ...
- fprintfAndFscanf简单操作
C语言fscanf和fprintf函数的用法详解(格式化读写文件)(代码转载) #include<stdio.h> #define N 2 struct stu{ char name[10 ...
- REST架构简介
restful简介 在如今web开发纵横的时代,几乎处处可见web页面,每个人都有自己的设计风格,这也导致了web接口五花八门,可能一个增删改查就要对应4个不同的url,这是非常浪费资源,于是Fiel ...
- 攻防世界——web新手练习区解题总结<2>(5-8题)
第五题cookie: 所需工具:burpsuite(需自行下载) 老规矩看完题,先获取在线场景,得到如下网页 那么什么是cookie呢?大体上就是网站为了识别用户身份而储存在用户本地终端上的数据,类型 ...
- python3笔记-读取ini配置文件
在代码中经常会通过ini文件来配置一些常修改的配置.下面通过一个实例来看下如何写入.读取ini配置文件. 需要的配置文件是: [path] back_dir = /Users/abc/PycharmP ...
- List集合对象去重及按属性去重的8种方法-java基础总结系列第六篇
最近在写一些关于java基础的文章,但是我又不想按照教科书的方式去写知识点的文章,因为意义不大.基础知识太多了,如何将这些知识归纳总结,总结出优缺点或者是使用场景才是对知识的升华.所以我更想把java ...
- vue、react等SPA应用页脚组件闪烁的解决办法
大家好,我是木瓜太香.大家在开发单页应用的时候,经常会遇到这样的需求,头部和尾部两个组件是大多数组件公用的,而中间的内容区域则是单独存在的,而且一般内容组件逻辑会比较多,如果我们不停刷新页面可能会出现 ...