jvm详情——1、堆中存什么?栈中存什么?
2018-12-27 16:42
447 查看
数据类型
Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的
值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象
本身存放在这个引用值所表示的地址的位置。
基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress
引用类型包括:类类型,接口类型和数组。
栈是运行时的单位,而堆是存储的单位。
栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;堆解决的是数据存储的问题,即数据怎么放、放在哪儿。
堆中存什么?栈中存什么?
堆中存的是对象。栈中存的是基本数据类型和堆中对象的引用。一个对象的大小是不可估计的,或者说是可
以动态变化的,但是在栈中,一个对象只对应了一个4btye的引用(堆栈分离的好处:))。
为什么不把基本类型放堆中呢?因为其占用的空间一般是1~8个字节——需要空间比较少,而且因为是基本
类型,所以不会出现动态增长的情况——长度固定,因此栈中存储就够了,如果把他存在堆中是没有什么意义
的(还会浪费空间,后面说明)。可以这么说,基本类型和对象的引用都是存放在栈中,而且都是几个字节的
一个数,因此在程序运行时,他们的处理方式是统一的。但是基本类型、对象引用和对象本身就有所区别了,
因为一个是栈中的数据一个是堆中的数据。最常见的一个问题就是,Java中参数传递时的问题。
相关文章推荐
- 第30课:彻底解密Spark 2.1.X中Shuffle中JVM Unified Memory内幕详情:Spark Unified Memory的运行原理和机制是什么?Spark JVM最小配置是什么
- JVM运行时是什么样子?
- 什么是JVM、Java编译器和Java解释器
- 正在使用的系统是什么版本如何查看win7系统详情
- JVM运行时是什么样子?
- JVM中的常量池和运行时常量池有什么区别
- 什么是jvm
- Tomcat的JVM经常挂掉,根据hs_err_pid23224.log这种日志文件,也没能发现具体是什么原因导致的
- 什么是JVM?java被称作是平台无关的编程语言?
- JVM加载class文件的原理机制是什么?类加载器的工作原理
- JVM - 2. java堆栈里面到底有什么
- 什么是JVM
- 为什么 java wait/notify 必须与 synchronized 一起使用,jvm究竟做了些什么
- 牛客网Java刷题知识点之什么是进程、什么是线程、什么是多线程、多线程的好处和弊端、多线程的创建方式、JVM中的多线程解析、多线程运行图解
- 弄懂JDK、JRE和JVM到底是什么
- 一个例子告诉你什么是CLR(JVM同理),以及版本兼容
- jvm详情——2、Java对象在jvm中的大小
- JRE、JDK、JVM 及 JIT 之间有什么不同
- 细说JVM系列:JVM存在的目的和意义是什么?
- JVM架构(012)_fullGC、minorGC、magorGC有什么区别