java的对象内存和数据类型
一、三种情况的对象内存图
(1)Java内存分配介绍:
栈:
队:
方法区(jdk7):加载字节码文件、(从jdk8开始取消方法区,新增元空间,把原来方法区的多种功能进行拆分,有的功能放到堆中,有的功能放到元空间中)
本地方法区:
寄存器:

(2)一个对象的内存图
Student s = new Student();
加载class文件:把student类的字节码文件加载到方法区
声明局部变量:对s进行声明
在堆内存中开辟一个空间:new关键字在堆里面开辟一个空间,这个空间就是对象(放在一个地址值中)
默认初始化:对第3部进行赋值
显示初始化:对第3部进行赋值
构造方法初始化:对第3部进行赋值
将堆内存中的地址值赋值给左边的局部变量
eg:

study执行后出栈,main方法执行完毕出栈,main里面的变量也会消失,mian里面的指向也会消失,当main没有任何东西指向堆内存的时候,堆内存存储的变量和相应的值也会消失变成垃圾

(3)多个对象的内存图

注意:s1和s2两个空间互相独立,不会相互影响。s1.study和s2.study调用完毕后会进行出栈处理,main方法执行完毕出栈,s1和s2没有任何东西调用堆内存会消变成垃圾
(4)两个引用变量指向同一个对象内存图:

stu1被stu2覆盖,相应的值也会发生改变

此时堆内存没有任何东西指向,堆内存里面的变量声明消失,然后买呢方法执行完毕进行出栈
二、基本数据类型和引用数据类型
(1)基本数据类型:在变量中存储的是真实的数据的值
整数类型
浮点数类型
布尔类型
字符类型

(2)引用数据类型:在代码当中创建的任意对象和数组都是引用数据类型
引用数据类型:使用其他空间的数据
eg1:

eg2:

总结:
1. 基本数据类型:
数据值存储在自己的空间中
特点:赋值给其他变量也是赋的真实的值
2.引用数据类型:
数据值是存储在其他空间中,自己空间中存储的是地址值
特点:赋值给其他变量,赋的地址值,地址值存储的才是真实的数据
java的对象内存和数据类型的更多相关文章
- Java单个对象内存布局.md
我们在如何获取一个Java对象所占内存大小的文章中写了一个获取Java对象所占内存大小的工具类(ObjectSizeFetcher),那么接下来,我们使用这个工具类来看一下Java中各种类型的对象所占 ...
- Java常见对象内存分析
首先要明确Java内存的个位置上放的是啥 类.对象.实例三者的关系: 1.类:是对象的模板,可以实例化对象.(this不能出现在静态方法中) 2.对象:类的个体. 3.实例:实现的对象. 4.对应的引 ...
- Java进阶3. 内存回收机制
Java进阶3. 内存回收机制 20131029 前言: 学过C++的都知道,C++中内存需要程序员自己维护.说道这里,很多开发的同学就感觉很痛苦,当他转向Java的时候,就会说你看Java多好啊,程 ...
- Java虚拟机14:Java对象大小、对象内存布局及锁状态变化
一个对象占多少字节? 关于对象的大小,对于C/C++来说,都是有sizeof函数可以直接获取的,但是Java似乎没有这样的方法.不过还好,在JDK1.5之后引入了Instrumentation类,这个 ...
- [二]Java虚拟机 jvm内存结构 运行时数据内存 class文件与jvm内存结构的映射 jvm数据类型 虚拟机栈 方法区 堆 含义
前言简介 class文件是源代码经过编译后的一种平台中立的格式 里面包含了虚拟机运行所需要的所有信息,相当于 JVM的机器语言 JVM全称是Java Virtual Machine ,既然是虚拟机, ...
- Ehcache计算Java对象内存大小
在EHCache中,可以设置maxBytesLocalHeap.maxBytesLocalOffHeap.maxBytesLocalDisk值,以控制Cache占用的内存.磁盘的大小(注:这里Off ...
- Java虚拟机18:Java对象大小、对象内存布局及锁状态变化
一个对象占多少字节? 关于对象的大小,对于C/C++来说,都是有sizeof函数可以直接获取的,但是Java似乎没有这样的方法.不过还好,在JDK1.5之后引入了Instrumentation类,这个 ...
- java对象内存大小评估
Java对象的内存布局:对象头(Header).实例数据(Instance Data)和对齐填充(Padding).无论是32位还是64位的HotSpot,使用的都是8字节对齐.也就是说每个java对 ...
- Java面向对象_对象内存分析—值传递和引用传递
对象内存分析,我一直学的比较模糊,今天抽空整理一下,希望能理清. 先说一下,内存分析从何而来,这对于我们这些刚接触java的人来说都比较模糊,就从new关键字说起吧. new关键字表示创建一个对象或者 ...
- Java实例化对象过程中的内存分配
Java实例化对象过程中的内存分配: https://blog.csdn.net/qq_36934826/article/details/82685791 问题引入这里先定义一个很不标准的“书”类,这 ...
随机推荐
- Delphi TStringList 有趣的CommaText和DelimitedText
CommaText 在没有指定StrictDelimiter=true的情况下,当列表中项中 包含 空格和逗号的时候就默认的 在这个字符串上面 增加 双引号 很智能吧 例子1: var MyList: ...
- 《ASP.ENT Core 与 RESTful API 开发实战》-- 读书笔记(第1章)
第 1 章 REST 简介 1.1 API 与 REST API 是一个系统向外暴露或公开的一套接口,通过这些接口,外部应用程序能够访问该系统 REST 是一种基于资源的架构风格,任何能够命名的对象都 ...
- C# 二十年语法变迁之 C# 8参考
C# 二十年语法变迁之 C# 8参考 自从 C# 于 2000 年推出以来,该语言的规模已经大大增加,我不确定任何人是否有可能在任何时候都对每一种语言特性都有深入的了解.因此,我想写一系列快速参考文章 ...
- NC204871 求和
题目链接 题目 题目描述 已知有 \(n\) 个节点,有 \(n-1\) 条边,形成一个树的结构. 给定一个根节点 \(k\) ,每个节点都有一个权值,节点i的权值为 \(v_i\) . 给 \(m\ ...
- NC14545 经商
题目链接 题目 题目描述 小d是一个搞房地产的土豪.每个人经商都有每个人经商的手段,当然人际关系是需要放在首位的. 小d每一个月都需要列出来一个人际关系表,表示他们搞房地产的人的一个人际关系网,但是他 ...
- NC214362 第k小
题目链接 题目 题目描述 有一个长度为n的数组,值为 a[i], 牛牛想找到数组中第 k 小的数.比如 1 2 2 3 4 6 中,第 3 小的数就是2. 牛牛觉得这个游戏太简单了,想加一点难度,现在 ...
- Docker 容器逃逸漏洞 (CVE-2020-15257)
漏洞详情 Docker发布一个容器逃逸漏洞,攻击者利用该漏洞可以实现容器逃逸,提升特权并破坏主机. containerd使用的抽象套接字仅使用UID做验证,即任意UID为0的进程均可访问此API. 当 ...
- VUE2的前端学习笔记
名词笔记 Node node.js 是一切的基础, 其他的名词都是基于这个运行的, 相当于一个JavaScript的容器或者虚机 NPM 安装node.js时赠送的包管理器, 类似于apt, yum, ...
- TS内置类型与拓展
TS内置类型与拓展 TypeScript具有类型系统,且是JavaScript的超集,其可以编译成普通的JavaScript代码,也就是说,其是带有类型检查的JavaScript. 内置类型 Type ...
- Laravel入坑指南(12)——最终章:Session、缓存与Redis
因为web服务除了业务准确之外,我们最关注的就是服务的性能.鉴于web服务几乎都是IO密集型,我们为了提高IO的速度,自然不能把所有的数据都放在关系型数据库中.而redis的并发与性能可以很好地帮我们 ...