JAVA Stack栈和Heap堆的区别(转)

      首先分清楚Stack,Heap的中文翻译:Stack—栈,Heap—堆。
在中文里,Stack可以翻译为“堆栈”,所以我直接查找了计算机术语里面堆和栈开头的词语:
 堆存储: heapstorage    堆存储分配: heapstorage allocation  堆存储管理: heap storage management
 栈编址: stack addressing   栈变换:stack transformation  栈存储器:stack memory  栈单元: stack cell
接着,总结在Java里面Heap和Stack分别存储数据的不同。
            Heap(堆)      Stack(栈)
 JVM中的功能     内存数据区                   内存指令区
 存储数据     对象实例(1) 基本数据类型, 指令代码,常量,对象的引用地址(2)
1. 保存对象实例,实际上是保存对象实例的属性值,属性的类型和对象本身的类型标记等,并不保存对象的方法(方法是指令,保存在stack中)。
   
   对象实例在heap中分配好以后,需要在stack中保存一个4字节的heap内存地址,用来定位该对象实例在heap中的位置,便于找到该对象实例。
2. 基本数据类型包括byte、int、char、long、float、double、boolean和short。
    函数方法属于指令.
=======================       
引用网上广泛流传的“Java堆和栈的区别”里面对堆和栈的介绍;
          "Java 的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。"
        “栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。 
   
         可见,垃圾回收GC是针对堆Heap的,而栈因为本身是FILO - first in, last out. 先进后出,能够自动释放。 这样就能明白到new创建的,都是放到堆Heap!
http://android.blog.51cto.com/268543/50100/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSDN Markdown编辑器编辑教程

目录快捷键文字样式设置(字体, 大小, 颜色, 高亮底色)内嵌HTML表格定义列表代码块脚注数学公式UML 图:离线写博客常见颜色[TOC](目录)快捷键 - 加粗 Ctrl B - 斜体 Ctrl I - 引用 Ctrl Q- 插入链接 Ctrl L- 插入代码 Ctrl K- 插入图…

一个奇怪的EL表达式错误

下图是在Struts2的action中写的一个方法 JSP页面代码如下: 在页面访问如下路径:http://localhost:8088/maven_ssh/cust_getCustList 目前推测原因是存到session中的对象键值"custList"和action中方法名getCustList冲突了? 各位怎么…

Ruby 数组

city["北京","上海","天津","重庆"]puts citycityArray.newcity[0]"北京"city[1]"上海"city[2]"天津"city[3]"重庆"puts city city["北京","上海","天津",&qu…

(转) java 复制文件,不使用输出流复制,高效率,文件通道的方式复制文件

public static void fileChannelCopy(File s, File t) {FileInputStream fi null;FileOutputStream fo null;FileChannel in null;FileChannel out null;try {fi new FileInputStream(s);fo new FileOutputStream(t);in fi.getChannel();// 得到对应的文件通道out fo.g…

Mysql中的in和find_in_set的区别?

在mysql中in的使用情况如下: select * from article where 列名 in(值1,值2,值3.....); select * from article where 值1 in(值1,值2,值3.....); 在mysql中find_in_set的使用情况如下&#xff…

Vue组件强制刷新(重新渲染)的四种方案对比

文章目录前言一、刷新整个页面二、使用v-if标记三、forceUpdate四、key-changing五、应用场景vue具有缓存的页面的强制刷新进入页面输入框自动聚焦前言 Vue的双向绑定属于自动档;在特定的情况下,需要手动触发“刷新”操作,目前有四种方案可以…

AOJ 0525 Osenbei【穷竭搜索】

AOJ 0525 题意: 有一个烤饼器可以烤r行c列的煎饼,煎饼可以正面朝上(用1表示)也可以背面朝上(用0表示)。一次可将同一行或同一列的煎饼全部翻转。现在需要把尽可能多的煎饼翻成正面朝上,问最多能…

wp imei

由于WP8SKD不提供获取机子IMEI的方法,所以无法得到机子IMEI,但是SDK提供一另一个获取唯一ID的方法,在Microsoft.Phone.Info.DeviceExtendedProperties里面的DeviceUniqueId。 通过这个方法可以获得. 参考 wp8sdk有关DeviceExtendedProperties…

css-如何对每行中最后一个元素删除边距?

文章目录前言一、负边距一、nth-child()系列)前言 如何从最后一列的每个元素中删除边距? 在元素宽度不确定的情况下,或者如果屏幕很小或用户调整浏览器大小,则每行排列的个数就不确定 因此,在任何情况下,最后一列中出…

Cntlm安装和配置心得

2019独角兽企业重金招聘Python工程师标准>>> 对于那些使用NTLM进行身份验证的网络代理环境(即设置上除需要代理主机和端口之外还需要提供域用户和密码)来说,通过代理上网是一件头痛的事情,这主要是因为很多软件不支持N…

vim插件之cscope的安装与配置

本文参考自: http://easwy.com/blog/archives/advanced-vim-skills-cscope/ http://blog.csdn.net/dengxiayehu/article/details/6330200 http://blog.csdn.net/daofengdeba/article/details/7606616 插件介绍: cscope是用来查看源代码的工具&#xff0c…

字符串编辑距离(转载)

Levenshtein Distance (LD, 来文史特距离)也叫edit distance(编辑距离),它用来表示2个字符串的相似度,LD定义为需要最少多少步基本操作才能让2个字符串相等,基本操作包含3个:插入, 删除, 替换;比如,kiteen和…

css媒体查询(手机、平板、PC)

List item css媒体查询PC端按屏幕尺寸整理? 通过上面的电脑屏蔽及尺寸的例表上我们得到了几个宽度 1024 1280 1366 1440 1680 1920 超小屏幕 手机 (<768px) 小屏幕 平板 (≥768px) 中等屏幕 桌面显示器(≥992px) 大屏幕 大桌面显示器 (≥1200px) /* 超小屏幕&#xff08…

C/C++面试题(一)

1、局部变量能否和全局变量重名&#xff1f;答&#xff1a;能&#xff0c;局部会屏蔽全局。局部变量可以与全局变量同名&#xff0c;在函数内引用这个变量时&#xff0c;会用到同名的局部变量&#xff0c;而不会用到全局变量。对于有些编译器而言&#xff0c;在同一个函数内可以…

读书摘录(二)

人们只能听到自己喜欢听的&#xff0c;只能看到自己喜欢看的。博弈论中的一个关键教训&#xff1a;你需要了解对方的想法。你需要考虑他们知道些什么&#xff0c;是什么在激励着他们&#xff0c;甚至他们是怎么看你的。无论你多努力&#xff0c;你都很有可能完全没有机会做到富…

hbase配置详解(转)

转自&#xff1a;http://www.cnblogs.com/viviman/archive/2013/03/21/2973539.html 1 准备工作 因为我只有一台机器&#xff0c;所以&#xff0c;一切都成为了伪分布&#xff0c;但是&#xff0c;其实和集群是一样的啦。 在hbase配置之前&#xff0c;先确定自己的linux上有两个…

js rem 单位适配(手机、平板、PC)?

js rem单位适配<script type"text/javascript">// 设备区分 &#xff08;安卓、火狐、平板、PC&#xff09;var os function() {var ua navigator.userAgent,isAndroid /(?:Android)/.test(ua),isFireFox /(?:Firefox)/.test(ua),isTablet /(?:iPad|Pl…

hdu 4160 Dolls (最大独立)

点击打开链接 需要排下序。。 #include"stdio.h" #include"string.h" #include"stdlib.h" #define N 501 struct node {int a,b,c; }aa[N]; int map[N][N],v[N],link[N]; int n; int cmp(const void*a,const void*b) {struct node *c,*d;c(struc…

破解中国电信华为无线猫路由(HG522-C)自己主动拨号+不限电脑数+iTV

中国电信总是把好好的一个路由猫阉割过后放在我的E家套餐里到处兜售&#xff08;垄断市场也就罢了&#xff0c;还有非常多霸王条款&#xff0c;比方必须使用它们的手机&#xff0c;同一时候最多多少台电脑上网等等&#xff09;&#xff0c;曾经破解过另外一个中国电信的路由猫&…

移动端适配(必须要知道的,亲测有效)

关于移动端适配&#xff08;必须要知道的&#xff0c;亲测有效&#xff09;一、各种单位概念理解二、移动&#xff0c;web开发三、移动端适配1、视口(viewport)概念2、视口(viewport)适配&#xff08;代码&#xff09;3、rem单位适配flexible方案竖屏、横屏、ipad、PC最全的适配…