JVM笔记
来源:互联网 发布:js判断变量是否等于0 编辑:程序博客网 时间:2024/04/29 09:30
一 || 概念部分
1.1 数据类型: 基本类型 基本类型的变量保存原始值,即:他代表的值即是数值本身。byte short char int long float double boolean returnAddress
引用类型 引用类型的变量保存引用值。引用值代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址位置。
1.2 堆与栈
1》栈是运行时单位,而堆是存储单位。
2》堆中存储的是对象。栈中存的是基本数据类型和堆中对象的引用,一个对象的大小是可以动态变化的,但栈中,一个对象只对应了一个4byte的引用。
3》为什么不把基本类型存在堆中呢,因为其占用空间一般是1-8个字节,需要空间少而确定。
4》栈解决程序的运行问题,即程序如何执行,如何处理数据。堆解决的是数据存储问题,即数据怎么放,放在哪。
5》一个线程对应其独立的线程栈。
思考:堆栈分离<1.从软件设计角度看,栈代表了处理逻辑,堆代表了数据。使处理逻辑更为清晰。
2.堆中内容可以被多个栈共享(多个线程访问同一个对象) 数据交互便利,堆中常量和缓存可以被所有栈访问,节省空间。
3.栈因运行时需要,需要进行地址段的划分,只能向上增长,限制栈存储能力,而堆中对象可以跟据需要动态增长的,而相应栈中只需要记录堆中一个地址即可。
4.面向对象:当我们把对象拆开,对象的属性其实就是数据,存放在堆中,而对象的行为(方法),就是运行逻辑,放在栈中,我们在编写面向对象 时候,既编写了数据结构,也编写了处理数据的逻辑。
5.垃圾回收机制成为可能。>
备注:栈大小设置 -Xss 无法返回的递归。-StackOverflowError异常。
1.3 java对象大小
一个空Object对象的大小是8byte,这个大小是保存堆中一个没有任何属性值的对象的大小。Object ob = new Object(); 所占空间4+8byte 4byte是其引用占用空间,8byte是java堆中对象的信息。因为所有java非基本类型的对象都默认继承Object对象,因此不论其他什么对象,都必须是大于8byte的。
- JVM笔记
- jvm笔记
- jvm笔记
- jvm笔记
- JVM笔记
- jvm笔记
- jvm笔记
- JVM笔记
- JVM 笔记
- jvm笔记
- JVM笔记
- JVM笔记
- JVM 笔记
- JVM笔记
- JVM笔记
- JVM笔记
- JVM 【笔记】
- JVM 学习笔记
- latex里引用bib的一些问题
- 网盘资源
- 2014年-如何编写游戏辅助工具
- Android studio安装详解
- 简单的数组排序、反转
- JVM笔记
- 解析url参数
- TypeScript入门-9.函数箭头表达式
- iOS组件化开发之Pod私有库
- Express: Can’t set headers after they are sent.
- signal函数详细用法
- Git免登录,不需重复输入账号和密码
- 前端页面开发几点小知识点总结
- 杭电 2015 ( 偶数求和 ) java