jvm中堆和栈的区别
1.前言。
其实jvm能优化的空间不多,最主要的是使用的共享内存不要超过默认的2g或者自己调的参数。但了解一下还是有点意思的,建议面试时还是要看,别学笔者裸奔。
2.区别。
网上说是有5点区别。但笔者认为只有两点主要区别。
- 堆--用new建立,垃圾自动回收负责回收
- 1、堆是一个"运行时"数据区,类实例化的对象就是从堆上去分配空间的;
- 2、在堆上分配空间是通过"new"等指令建立的;
- 3、Java针对堆的操作和C++的区别就是,Java不需要在空间不用的时候来显式的释放;
- 4、Java的堆是由Java的垃圾回收机制来负责处理的,堆是动态分配内存大小,垃圾收集器可以自动回收不再使用的内存空间。
- 5、但缺点是,因为在运行时动态分配内存,所以内存的存取速度较慢。
- 1、栈中主要存放一些基本类型的变量(int, short, long, byte, float, double, boolean, char)和对象句柄;
- 2、栈的存取速度比堆要快;
- 3、栈数据可以共享;
- 4、栈的数据大小与生存期必须是确定的,缺乏灵活性。
笔者认为就两点:
(1)堆主要放new的对象,而栈放基本类型和句柄,句柄指向的是堆。
(2)垃圾回收的时候回收的是堆,栈比较难回收,一般不回收(这个才是问你的原因,呵呵)。
3.总结。
就速度而言,都是内存操作,其实并没有很大区别。
jvm中堆和栈的区别的更多相关文章
- Java中堆和栈的区别(转)
栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new. ...
- C语言中堆和栈的区别
原文:http://blog.csdn.net/tigerjibo/article/details/7423728 C语言中堆和栈的区别 一.前言: C语言程序经过编译连接后形成编译.连接后形成的二进 ...
- 转载:C++中堆和栈的区别
C++中堆和栈的区别,自由存储区.全局/静态存储区和常量存储区 文章来自一个论坛里的回帖,哪个论坛记不得了! 在C++中,内存分成5个区,他们分别是堆.栈.自由存储区.全局/静态存储区和 ...
- C#中堆和栈的区别分析(有待更新总结)
转载:http://blog.csdn.net/zevin/article/details/5721495 一.预备知识-程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1.栈区 ...
- C中堆和栈的区别
C++中堆和栈的完全解析 内存分配方面: 堆: 操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删 除,并 ...
- Java JVM里堆和栈的区别
参考资料: 1.堆和栈的概念和区别 2.JVM虚拟机
- 【转】Java中堆和栈的区别
Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new.newarray.anewarray和multianewarray等 指令建立,它们不需要程序代码来显式的释放.堆是由垃圾回收 ...
- 让你彻底明白JAVA中堆与栈的区别
原文地址:http://www.2cto.com/kf/201302/190704.html 简单的说: Java把内存划分成两种:一种是栈内存,一种是堆内存. 在函数中定义的一些基本类型的变量和对象 ...
- java中堆和栈的区别
从宏观上来讲,栈内存:存储基本数据类型.堆内存:存储实际的对象内容.说明白点就是new出来的东西. int a = 3; int b = 3; a = 4; 编译器首先会处理int a = 3;将a进 ...
随机推荐
- css3选择
在一些项目中,我们常常需要实现选择类似于3的倍数的位数的元素,或者从第n个之后的元素,或者从第n个到第m个元素这种类型的选择,如果说在以前,想完全通过css实现,似乎是天方夜谭,根本不可能实现,CSS ...
- 20165205 学习基础与C语言基础调查
学习基础和C语言基础调查 从<做中学>学到的经验 首先,在老师的这几篇文章中,最核心的一片文章就是<做中学>这一篇了,在文章中强调了不断联系的重要性,然后在学以致用的过程中发现 ...
- php学习笔记1——使用phpStudy进行php运行环境搭建与测试。
1. 新手第一步还是使用phpStudy搭建一下windows下的php环境,并测试.如下: http://jingyan.baidu.com/article/3c343ff7067eff0d3679 ...
- PHP企业微信配置点击事件。
1. 2. 3.URL接受值进行签名验证. <?phpinclude_once "../commmm/WXBizMsgCrypt.php";/*微信提供 demo*/// 假 ...
- Mysql 预查询处理 事务机制
预处理 PDO支持sql预处理功能,可以有效的防止sql注入的问题 例如: 以下操作会导致数据表中所有数据删除 $host = 'localhost'; $port = 3306; $dbname = ...
- 功能测试-UI测试思考点
界面是否美观 元素大小 界面元素是否对齐方式统一 界面字体属性是否正确 界面链接及触发动作( 链接的地址是否正确,不允许存在死链的情况 链接打开方式,当前页面还是新开页面 鼠标点击后的颜色是否美观,不 ...
- java的第一次博客
一枚16年本科毕业的java程序员,至今工作两年,这是我的第一个博客. 谢谢!!!
- Windows 端口占用解决
- netty ChannelOption
项目中用到很多netty,配置了各种不同的ChannelOption优化项,不同的配置对于在高并发情况下的性能有不小的影响 首先看下全部项目,参考下这篇文章,虽然不全 https://www.cnbl ...
- es6 初级之---const 和 默认参数
1. const 的定义: 1.1 常量定义的时候要赋值,不赋值是会报错的: <!DOCTYPE html> <html lang="en"> <he ...