(一)1.3Java程序运行机制及运行过程
来源:互联网 发布:水平垂直奇偶校验算法 编辑:程序博客网 时间:2024/06/07 19:53
Java运行机制
Java虚拟机(Java Virtual Machine):Java虚拟机可以理解成一个以字节码为机器指令的CPU;对于不同的运行平台,有不同的虚拟机;Java虚拟机机制屏蔽了底层运行平台的差别,真正实现了“一次编译,随处运行”。
Java垃圾回收(Garbage Collection):不用使用的内存空间应该回收;在C/C++等语言中,由程序员负责回收无用的内存;Java语言消除了程序员回收无用内存的职 责,它提供一种系统级线程跟踪存贮空间的分配情况,并在JVM空闲的时候,检查并释放那些可以被释放的内存空间;垃圾收集在java程序运行过程中自动进 行,程序员无法控制和干预。
Java运行过程
Java源文件(*.java)——>Java编译器——>字节码文件(*.class)——>类装载器——>字节码校检器—— >解释器——>操作系统(Windows、Linux等)整个文件Load到内存区,一系列动作之后形成操作系统认识的代码,操作系统找到 main方法开始实行。
heap——>new 出来的东西放在这里
stack——>局部变量
data segment——>静态变量或字符串常量
code segment——>存放代码
局部变量:方法或是语句块内部定义的变量(local variable)
成员变量:方法外部、类内部定义的变量,也叫做全局变量(glbal valiable)
Java Application初步
一个源文件中最多只能有一个public类,其他类的个数不限。程序的入口是:
public static void main(String[] args){...}
Java 语言严格区分大小写和格式。
ava中程序执行过程及内存分配情况:
下面用一个程序例子来说明内存的分配,程序如下:
注意:下面图中的堆和栈应该互换一下,本人在画图时搞反了!
堆和栈的区别可以用如下的比喻来看出:
使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就
走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自
由度小。
使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由
度大。 (经典!)
1.首先用new定义了一个对象test,(于用new来定义对象或变量)其内存分配情况如下:
2.然后定义了一个整形变量date,其值为9.内存分配情况如下:
3.接着用new定义了两个对象,d1和d2.其内存分配情况如下:
4.接着用test来调用其方法change1,调用了方法,进行了值传递。在调用时将9赋予变量i,后面在函体内只是改变了变量i的值,而没有改变date的值。内存分配情况如下:
5. 由于变量i是在调用函数change时分配的,在函数调用结束就回收了变量i的内存分配。调用完后内存分配情况如下:
6.调用test的change2函数,将d2作为参数传递给形参。在调用函数时在内存堆中分配一个对象b的空间,然后在内存栈中通过值传递分配实际单元与值。在调用change2时,执行函数体内的语句,只是改变了对象b中的内容,而d1中的内容未改变。内存分配情况如下:
7.在调用完函数后,回收b的内存空间(包括堆与栈中的内容)。内存分配情况如下:
8.调用test的方法change3方法,在内存的堆中分配一块区域给形参对象b,在栈中的分配指向d1的区域,器内存分配情况如下:
9.然后执行函数中的语句,将对象d1中的值改变为22,调用函数结束后,回收堆栈中的内存空间。其内存分配情况如下:
注意:上面图中的堆和栈应该互换一下,本人在画图时搞反了!
综上所述,内存分配情况是:
1.new分配的变量在对区域中,局部变量在栈区域中。
2.要想改变值时,只有当通过引用调用其方法才有作用发生。
- (一)1.3Java程序运行机制及运行过程
- Java程序运行机制及运行过程
- Java程序运行机制及运行过程
- Java程序运行机制及运行过程
- Java程序运行机制及运行过程
- java入门(1) 程序运行机制及运行过程
- Java程序运行机制及cmd编译运行探究(一)准备工作
- 黑马程序员_java 程序运行机制及运行过程
- javaSE学习01_java程序运行机制及运行过程
- java虚拟机的运行机制,java程序的运行过程
- Java程序运行机制及cmd编译运行探究(三) 测试类运行jar包
- 浅谈java程序运行时内存分配及运行机制
- Java程序运行机制及cmd编译运行探究(二) cmd编译运行Java程序并打成jar包
- 1.3Java程序运行机制
- java学习一 java程序运行过程
- Java学习笔记(一)Java运行机制及JVM相关
- Java常用类源码分析及运行机制(一):logging
- java程序运行过程
- JDBC事务、JTA(Java Transaction API)事务、容器事务
- Linux命令基本格式及目录处理命令
- Glassfish部署cxfwebservice,axis调用报错的问题
- 读写分离
- Charles Petzold《Code》----2017.1.13 读12章
- (一)1.3Java程序运行机制及运行过程
- Git远程分支和refs文件详解
- 项目管理所思所想
- OGRE之坐标系、向量与转换
- 全国公共资源服务实现全面电子化倒计时5个月的期待
- 微信小程序之简介(一)
- android:layout_weight 属性的工作原理
- C语言数据类型
- 大学毕业究竟看什么?