文章标题
来源:互联网 发布:淘宝商城行车记录仪 编辑:程序博客网 时间:2024/06/05 22:54
1、java堆和栈有什么区别
了解jvm内存管理看这里:jvm是如何管理内存的
在《jvm是如何管理内存的》这篇文章中,已经对PC寄存器(计数器 pc registers)、方法区(method area)、本地方法栈(native method stacks)、栈(stacks)、堆(heap)内存区域做了介绍,其中栈(stacks)、堆(heap)是Java内存管理中非常重要的两个部分,具体区别如下:
这里写图片描述
2、基本数据类型储存在栈中吗
基本数据类型由于长度固定,且需要空间比较少,所以直接存储在栈中(String是一个特殊的类型,它的值存储在堆中,但是通过池达到和栈类似的存取速度,具体看这里:String在内存中如何存放)。而对象比较大,所以栈中只存储一个4btye的引用地址(逻辑地址)。
实例:
int a = 3 ;
int b = 3 ;
1
2
1
2
分析如下:
编译器先处理int a = 3;首先它会在栈中创建一个变量为a的引用,然后查找栈中是否有3这个值,如果没找到,就将3存放进来,然后将a指向3。
接着处理int b = 3;在创建完b的引用变量后,因为在栈中已经有3这个值,便将b直接指向3。这样,就出现了a与b同时均指向3的情况。
这时,如果再令a=4;那么编译器会重新搜索栈中是否有4值,如果没有,则将4存放进来,并令a指向4;如果已经有了,则直接将a指向它。因此a值的改变不会影响到b的值。
0 0
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 括号配对问题
- jdbc随手笔记-对于dao通用方法的抽取
- jsp中的basePath和path
- 线程等待例子,来自微软
- 下载的网页模板只显示英文不显示中文
- 文章标题
- ExecutorService对象的shutdown()和shutdownNow()的区别
- 萌妹子Python入门指北(五)
- 一对多 、多对多 的检索策略
- 建立高效的并发模型 in cpp
- Quartz的任务的临时启动和暂停和恢复
- 设置TaxtView的监听
- 流(3.5.1~3.5.2)
- 文章标题