创建一个对象都在内存中做了什么事情?
来源:互联网 发布:java股票分析系统源码 编辑:程序博客网 时间:2024/05/21 07:58
一、 JVM 内存区域组成
简单的说 java中的堆和栈
java把内存分两种:一种是栈内存,另一种是堆内存
1、堆内存用来存放由 new创建的对象和数组
2、在函数中定义的基本类型变量和对象的引用变量都在函数的栈内存中分配;
在函数(代码块)中定义一个变量时, java就在栈中为这个变量分配内存空间,当超过变量的作用域后, java会自动释放掉为该变量所分配的内存空间;在堆中分配的内存由 java虚拟机的自动垃圾回收器来管理
堆的优势是可以动态分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的。缺点就是要在运行时动态分配内存,存取速度较慢;
栈的优势是存取速度比堆要快,缺点是存在栈中的数据大小与生存期必须是确定的无灵活 性。
出处:http://blog.sina.com.cn/s/blog_66474b160101g8mz.html
二、Person p = new Person();
创建一个对象都在内存中做了什么事情?
1:先将硬盘上指定位置的Person.class文件加载进内存。
2:执行main方法时,在栈内存中开辟了main方法的空间(压栈-进栈),然后在main方法的栈区分配了一个变量p。
3:在堆内存中开辟一个实体空间,分配了一个内存首地址值。
4:在该实体空间中进行属性的空间分配,并进行了默认初始化。
5:对空间中的属性进行显示初始化。
6:进行实体的构造代码块初始化。
7:调用该实体对应的构造函数,进行构造函数初始化。()
8:将首地址赋值给p ,p变量就引用了该实体。(指向了该对象)
成员变量和静态变量的区别:
1,成员变量所属于对象。所以也称为实例变量。
静态变量所属于类。所以也称为类变量。
2,成员变量存在于堆内存中。
静态变量存在于方法区中。
3,成员变量随着对象创建而存在。随着对象被回收而消失。
静态变量随着类的加载而存在。随着类的消失而消失。
4,成员变量只能被对象所调用 。
静态变量可以被对象调用,也可以被类名调用。
方法区:
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
- 创建一个对象都在内存中做了什么事情?
- 创建一个对象都在内存中做了什么事情?
- 创建一个对象都在内存中做了什么事情
- 创建一个对象都在内存中做了什么事情?
- (JAVA自学笔记)创建一个对象都在内存中做了什么事情
- 面试题:Student s = new Student();在内存中做了哪些事情?即创建一个对象做了哪些事情
- 新建的对象在内存中做了什么?
- 创建对象在内存中都做了那些事情(对象初始化过程)
- Java---A a = new A();在内存中做了什么事情?
- 什么事情都有一个折中
- 对象在创建的时候都发生了什么?
- 使用字面量创建变量对象都发生了什么?
- 当你打开一个网页时,都发生了什么事情?
- new一个对象的时候JVM都做了哪些事情
- new一个对象的时候JVM都做了那些事情
- new一个对象的时候JVM都做了那些事情
- java中的方法之new一个对象的时候JVM都做了那些事情
- new一个对象的时候JVM都做了哪些事情
- 前端样式学习
- 七层登录——C#
- iOS延时操作
- mysql 线程等待时间,解决sleep进程过多的办法
- Spring Security 3.x完整入门配置教程及其代码下载
- 创建一个对象都在内存中做了什么事情?
- iOS关于App上线构建版本一直正在处理的解决方法
- 浮点数的内存介绍
- 命令行是你的至交好友
- insert--select添加数据
- Libev库学习3---watcher与loop的操作
- Android 的三种menu
- Core Graphics框架学习之在图片上绘制文字
- 【国家集训队2012】【BZOJ2568】比特集合