- 浏览: 253632 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (232)
- 瞎扯两句 (8)
- 操作系统 (5)
- 工作笔记 (33)
- 设计模式 (1)
- java (57)
- Java IDE (7)
- hibernate (17)
- oracle (46)
- ms sql (2)
- spring (9)
- struts2 (0)
- javascript (16)
- java_code (2)
- java之集合 (2)
- java之线程 (4)
- java之IO (4)
- java之虚拟机 (6)
- java之异常 (0)
- EJB (4)
- XML (4)
- 数据结构-算法 (2)
- 架构设计 (5)
- 配置信息 (2)
- 阅读笔记 (6)
- IT专业英语 (1)
- PI (0)
- 单元测试 (1)
最新评论
java 的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。
栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。
基本数据类型存储在“栈”中,对象引用类型实际存储在“堆”中,在栈中只是保留了引用内存的地址值。=================================================================================================================
栈中的数据占内存大小在编译时是确定的,比如一个int类型就占4B,所以变量地址好计算,所以分配和销毁和访问速度都比较快.
堆中的数据占内存大小一般在编译时是不确定的,在运行时才能知道大小,所以其地址只有在运行时计算,而且运行时可能占内存大小还有变动,所以对这样的数据的分配,销毁和访问都非常不方便,速度也慢一些.
===================================================================================================================
栈里放的是地址,堆里可以放数据也可以放地址(想象下堆里的东西也有可能指向别的地方)
每个地址都会指向给定的数据,不然就没有存在的必要了,同样的道理,堆中的数据没有被指针指向的话,也没有存在的必要了,所以当obj=null时就释放内存了。
Java有个好处就是没有指针,Java中的传递的都是传引用,不像c++还能传地址,比如指针p++和p+1两个的结果完全不同。
====================================================================================================================
栈是编译时分配空间,而堆是动态分配(运行时分配空间),所以栈的速度快
cpu有专门的寄存器(esp,ebp)来操作栈,堆都是使用间接寻址的。栈快点。
栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。
基本数据类型存储在“栈”中,对象引用类型实际存储在“堆”中,在栈中只是保留了引用内存的地址值。=================================================================================================================
栈中的数据占内存大小在编译时是确定的,比如一个int类型就占4B,所以变量地址好计算,所以分配和销毁和访问速度都比较快.
堆中的数据占内存大小一般在编译时是不确定的,在运行时才能知道大小,所以其地址只有在运行时计算,而且运行时可能占内存大小还有变动,所以对这样的数据的分配,销毁和访问都非常不方便,速度也慢一些.
===================================================================================================================
栈里放的是地址,堆里可以放数据也可以放地址(想象下堆里的东西也有可能指向别的地方)
每个地址都会指向给定的数据,不然就没有存在的必要了,同样的道理,堆中的数据没有被指针指向的话,也没有存在的必要了,所以当obj=null时就释放内存了。
Java有个好处就是没有指针,Java中的传递的都是传引用,不像c++还能传地址,比如指针p++和p+1两个的结果完全不同。
====================================================================================================================
栈是编译时分配空间,而堆是动态分配(运行时分配空间),所以栈的速度快
cpu有专门的寄存器(esp,ebp)来操作栈,堆都是使用间接寻址的。栈快点。
发表评论
-
servletcontext 的获取
2013-05-12 20:10 477容器在初始化servlet时,会为其注入servletconf ... -
取得下一个sequence。 getNextInterval
2013-03-15 11:47 9391. 初始sequence值放置于数据库。 2. 启动时产 ... -
java 脚本,编译与注解处理
2013-02-05 10:04 8511.java中支持脚本调用 通过脚本引擎来执行。 Obj ... -
java 安全管理器
2013-02-04 11:24 8301.在java语言实现中,扩展和系统加载器都是java实现的, ... -
RMI 底层实现
2013-01-28 16:43 9151. server端代码: Registry regist ... -
Java获取当前路径
2013-01-22 18:12 896无论是抽象路径名还是路径名字符串,都可以是绝对 路径名或相对 ... -
java1.5 新特性
2013-01-10 16:50 764"JDK1.5"的一个重要主题就是通过新增 ... -
import static静态导入
2013-01-10 12:12 848import static静态导入是JDK1.5中的新特性。一 ... -
类加载器加载的类的访问权限问题
2013-01-04 15:34 10521.父加载器加载的类不能访问子加载器加载的类。 (向下可见性) ... -
java 内部类总结
2012-12-28 12:31 745主要从分类和使用情境来看 1. 普通内部类。 位置: 在 ... -
java构造函数和静态变量的执行顺序
2012-12-18 11:18 1034java初始化顺序 1在new B一个实例时首先要进行类的装载 ... -
Java多线程之Condition接口的实现
2012-11-26 17:03 937在实际中一个lock可产生多个Condition对象。个人认为 ... -
java线程同步原理(lock,synchronized)
2012-11-26 14:26 998一。 java线程同步原理 java会为每个object对象分 ... -
总结下java中abstract,interface,final,static,加深理解
2012-11-16 17:16 888一,抽象类:abstract 1,只要有一个或一个 ... -
为什么interface的变量必须是public final static的
2012-11-16 17:15 1017public 感觉是因为Java对接口的要求是所有类都可以实现 ... -
stack在排序的应用
2012-10-22 17:04 718对于list, 可用Collections的静态方法 Coll ... -
随机访问文件RandomAccessFile 与 内存映射文件MappedByteBuffer
2012-09-25 14:59 1574RandomAccessFile RandomAccessF ... -
Java 服务器端支持断点续传的源代码
2012-09-25 14:44 4037Java 服务器端支持断点续传的源代码【支持快车、迅雷】(仅支 ... -
new File(String parent,String child)
2012-08-22 23:00 1169//user_dir:E:\workspace\javates ... -
System.getProperty
2012-08-22 22:07 913System.getProperty(String name) ...
相关推荐
- **栈**:访问速度快,因为内存分配与释放是由硬件栈指针直接操作,没有额外的管理开销。 - **堆**:访问速度相对较慢,因为它涉及到内存的搜索、分配、碎片处理等复杂操作,需要操作系统或运行时环境的支持。 ###...
C语言堆和栈的区别 C语言中,堆(heap)和栈(stack)是两种不同的内存分配机制。堆是由malloc或new分配的内存,系统不释放,需要程序员自己释放,否则会出现“内存泄露(Memory Leak)”。栈是自动分配的内存,...
"堆和栈的区别" 堆和栈是计算机科学中两个基本概念,它们都是程序在运行时所需的内存区域。理解堆和栈的区别是非常重要的,因为它们的使用方式和效率有很大的不同。 一、预备知识—程序的内存分配 一个由 C/C++ ...
- 栈的空间相对较小,但是访问速度快。 - 栈内的内存由系统自动管理,当方法执行完毕后,栈帧自动销毁。 - **堆(Heap)**: - 堆是用于动态分配内存的区域,在Java中,所有的对象实例都在堆上分配内存。 - 堆...
堆和栈是计算机内存管理中的两个...总的来说,理解堆和栈的区别和特性,对于优化代码、防止内存泄漏、提升程序性能至关重要。在编程实践中,应根据具体需求选择合适的数据存储方式,以实现更高效、更稳定的程序设计。
"内存中的堆与栈区别" 在程序中,内存分为四块,其中有一块用于存放代码,这里我们不讨论,这四块分别是:全局区(静态区)、文字常量区、栈区和堆区。 全局区(静态区) 全局变量和静态变量都存储在这块区域,与...
堆和栈的区别 堆和栈是计算机内存管理中两个重要的概念,它们都是程序运行时的内存分配方式,但是它们之间有着明显的区别。 1. 预备知识—程序的内存分配 程序的内存分配可以分为五个部分:栈区、堆区、全局区、...
内存中堆和栈的区别 内存中堆和栈是两个不同的概念,都是用来存放数据的内存区域,但它们有所区别。 内存分配方面 堆:一般由程序员分配释放,若程序员不释放,程序结束时可能由 OS 回收。堆的分配方式类似于链表...
- 堆内存大小不受栈的限制,取决于系统可用的虚拟内存,因此可以分配较大的内存块,但分配和释放速度较慢,且可能导致内存碎片。 - 如果程序员不主动释放,程序结束时操作系统可能会回收堆内存,但并非总是如此,...
堆和栈是计算机中两个重要的内存管理机制,它们之间的区别对于程序员来说非常重要。本文将详细介绍堆和栈的概念、特点、申请方式、申请后系统的响应、申请大小的限制、申请效率的比较、存储内容和存取效率的比较。 ...
"Java 堆和栈的区别" Java 堆和栈是 Java 中的两种内存管理机制,它们都是 Java 用来在 RAM 中存放数据的地方。但是,它们有很多不同之处。 Java 堆是一个运行时数据区,类的对象从中分配空间。这些对象通过 new、...
栈的内存分配速度快,但空间有限,通常只有几MB。 2. **堆(Heap)**: 堆是程序员自由分配和管理的内存区域。程序可以动态地申请和释放内存,大小不固定,可以非常大。然而,堆管理相对复杂,分配和释放内存的速度...
栈的操作速度快,但空间有限,通常只有几MB。 堆则是一种动态内存分配的方式,主要用于存储需要在程序运行期间持续存在的数据,比如大型数据结构、对象实例等。程序员可以自由地申请和释放堆内存,但这个过程比栈慢...
这种自动回收机制使得栈内存的分配与回收速度快,但空间有限。 2. **堆分配**:堆上的内存由程序员控制,需要通过`malloc()`、`new`等函数显式申请,使用完毕后也需手动释放,否则会造成内存泄漏。堆内存分配速度...
堆(heap)和栈(stack)的区别 堆(heap)和栈(stack)是计算机科学中两个基本的内存分配概念,它们之间的区别是非常重要的。本文将详细介绍堆和栈的概念、差异、特点和应用场景。 一、预备知识—程序的内存分配 一个由...
堆和栈的区别(C/C++) 在 C/C++ 编程中,堆和栈是两个基本的内存分配机制。理解堆和栈的区别是非常重要的,因为它们对程序的性能和可靠性产生了很大的影响。 一、内存分配 在 C/C++ 中,程序占用的内存分为五个...
### C语言入门:堆与栈的区别 在C语言的学习过程中,理解堆(Heap)与栈(Stack)的概念及其区别是非常重要的。本文将详细介绍这两种数据结构的特点、用途以及它们之间的主要区别,帮助初学者更好地掌握C语言中的...
### 操作系统中堆和栈的区别 #### 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存被细分为以下几个关键部分: 1. **栈区(Stack)**:这部分内存是由编译器自动管理的,主要用于存放函数的参数值...
- 栈的访问速度快,因为其内存分配和释放简单。 - 堆的访问速度相对较慢,由于需要额外的管理和跟踪。 - **空间限制**: - 栈的空间较小,由操作系统设定。 - 堆的空间较大,可以动态扩展。 #### 四、具体实例 ...