`
pengcqu
  • 浏览: 774548 次
  • 性别: Icon_minigender_1
  • 来自: 未来
社区版块
存档分类
最新评论

Java中Heap与Stack的区别

阅读更多

1) Heap是 Stack的一个子集。

 

2) Stack存取速度仅次于寄存器,Stack里面的数据可共享,但是其中数据的大小和生存期必须在运行前确定。

 

3) Heap是运行时可动态分配的数据区,从速度看比Stack慢,Heap里面的数据不共享,大小和生存期都可以在运行时再确定。

 

4) new关键字 是运行时在Heap里面创建对象。每new一次都一定会创建新对象,因为堆数据不共享。

Eg: String str1= new String("abc");   (1)

         String str2= "abc";               (2)

 str1是在Heap里面创建的对象。

 str2是指向Stack里面值为“abc”的引用变量,语句(2)的执行,首先会创建引用变量str2, 再查找Stack里面有没有“abc”,有则将 str2指向 “abc”,没有则在Stack里面创建一个“abc”,再将str2指向“abc”。

 

 

相关链接:

★  Java知识点汇总 

全球软件项目外包平台 兼职做外包 挣Money!

 

 

★ 【下载】经典常用算法 Java和C语言两种实现(含代码图例)

【下载】Java各种排序算法实现(含代码)

分享到:
评论
5 楼 甘艳丽 2012-08-26  
堆中的数据是所有线程共享的,而栈中的数据是每个线程所私有的。。。你上面的写错了。
4 楼 nintenyun 2009-11-05  
   String str1= new String("abc"); 
2个对象,一个在池中,一个在HEAP中
   String str2= "abc";             
一个对象,只是在String pool中
3 楼 javacoreSZ 2009-11-05  
胡说八道...
2 楼 ceasarje 2009-10-13  
不错,是目前见到的比较详细的new和""在堆栈层面的解释了,感谢分享。。。
1 楼 fishice 2009-10-13  

相关推荐

    java中堆(heap)和堆栈(stack)有什么区别

    "Java 中堆(heap)和堆栈(stack)的区别" Java 中堆(heap)和堆栈(stack)是两个不同的内存区域,分别用于存储不同的数据类型和对象。堆栈(stack)是 Java 中的一种内存区域,用于存储基本类型的变量和对象的...

    堆(heap)与栈(stack)的区别

    堆(heap)与栈(stack)是计算机内存管理中的两种基本数据结构,用于存储程序运行时产生的临时变量。在C语言中,这两种内存区域有非常明确的区分,对于理解程序的内存分配和回收具有重要意义。 首先,栈是一种特殊...

    The Run-time Heap and Stack

    在IT领域,尤其是在操作系统与编程语言的运行时环境中,“运行时堆和栈”(The Run-time Heap and Stack)是理解程序内存管理的核心概念。本文旨在深入解析这一主题,结合提供的部分文档内容,详细阐述堆和栈的区别...

    java解决nested exception is java.lang.OutOfMemoryError Java heap space

    Java内存主要分为三个区域:堆(Heap)、栈(Stack)和方法区(Method Area),其中堆是用于存储对象实例的主要区域,当堆空间不足时,就会抛出`OutOfMemoryError: Java heap space`。 1. **调整JVM堆大小**:可以...

    记录java.lang.OutOfMemoryErrorJava heap space的情况.docx

    在Java程序中,`java.lang.OutOfMemoryError: Java heap space` 是一个常见的错误,意味着程序在运行过程中耗尽了JVM分配的堆内存。这个错误通常发生在创建大量对象或者单个对象占用过多内存时。 一、问题描述与...

    深入Java虚拟机中的Stack和Heap

    非静态方法和静态方法的区别:非静态方法有一个和静态方法很重大的不同:非静态方法有一个隐含的传入参数,该参数是JVM给它的,与我们怎么写代码无关,这个隐含的参数就是对象实例在Stack中的地址指针。因此非静态...

    ibm HeapAnalyzer java内存分析工具 ha457.jar

    IBM HeapAnalyzer是一款强大的Java内存分析工具,主要用于诊断和解决Java应用程序中的内存泄漏问题。这款工具通过对Java堆内存的深入分析,帮助开发者定位那些占用过多内存的对象,从而优化应用性能。在Java开发过程...

    基于java中stack与heap的区别,java中的垃圾回收机制的相关介绍

    在Java中,内存主要分为两个区域:栈(Stack)和堆(Heap),以及垃圾回收机制(Garbage Collection)。 栈是程序执行过程中的临时数据存储区域,主要用于存储基本类型(如int、char)和对象的引用。每当一个方法被...

    深入Java虚拟机:JVM中的Stack和Heap

    "深入Java虚拟机:JVM中的Stack和Heap" Java虚拟机(JVM)是一种运行Java字节码的虚拟机环境,它具有自己的内存管理机制。JVM的内存分为两个部分:Stack(栈)和Heap(堆)。 Stack(栈)是JVM的内存指令区,管理...

    java heap s

    当程序运行过程中,如果堆空间不足,Java应用程序可能会抛出`java.lang.OutOfMemoryError: Java heap space`异常。这个错误表明程序在尝试分配新的对象时,无法找到足够的连续内存空间来完成分配。 ### Java内存...

    IBM heapdump analyzer

    在一些平台上,在有些情况下,javacore也被称为javadump,它包含jvm和应用程序相关的在特定时刻的一些诊断信息,如操作系统,应用程序环境,线程,native stack本地堆,锁,和内存的信息。在生成heapdump文件的时候...

    could not reserve enough space for object heap

    Java程序运行在JVM上,JVM将内存划分为几个区域,包括堆内存(Heap)、栈内存(Stack)、方法区(Method Area)、程序计数器(PC Register)和本地方法栈(Native Method Stack)。其中,堆内存是所有线程共享的一块...

    java 虚拟机 内存和栈 分析工具 ha456.rar

    Java内存主要分为堆(Heap)、栈(Stack)、方法区(Method Area)、程序计数器(PC Register)和本地方法栈(Native Method Stack)五大部分: 1. **堆**:Java对象主要存储在堆中,它是所有线程共享的一块区域。...

    Java基础知识点 - 内容比较全面

    8. **Java中Heap与Stack的区别**:堆(Heap)存储对象实例,大小可变,是垃圾回收的主要区域。栈(Stack)存储基本类型和对象引用,按后进先出(LIFO)原则管理,速度较快。 9. **Java中String和StringBuffer的区别...

    java机制介绍

    - 栈内存(Stack)与堆内存(Heap):Java将内存分为栈内存和堆内存。栈内存用于存放基本类型变量和对象的引用变量,堆内存用于存放通过new创建的对象和数组以及对象的实例变量。 - 堆的优势:动态分配内存大小,...

    北大青鸟JAVA面试题

    堆(Heap)和栈(Stack)是JAVA中两种重要的内存区域。堆是用于存储所有JAVA对象和数组的空间,其大小动态调整,由垃圾回收器管理。栈则是用于存储局部变量和方法调用的信息,每个线程都有自己的私有栈空间。 ### 8...

    java中equals和==的区别

    基本类型是存储在栈(stack)中的,而引用类型是存储在堆(heap)中的。引用类型的变量在栈中存储的是对象的地址,而对象本身存储在堆中。 == 操作比较的是两个变量的值是否相等,对于基本类型来说,比较的是两个...

    深入java虚拟机.pdf

    每一个线程都有自己的 PC 寄存器(程序计数器)和 Java 堆栈(Java stack)。PC 寄存器保存线程执行的下一条指令。Java 堆栈保存了一个线程调用方法时的状态,包括本地变量、调用方法的参数、返回值、处理的中间变量...

    Java核心基础+Java中的数据在内存中的存储

    在探讨Java中数据如何在内存中存储之前,我们需要先理解Java程序运行时内存的几个关键部分:堆(heap)与栈(stack)。 **1.1 栈 (Stack)** - **特点**: - 存取速度快。 - 数据大小和生命周期已知。 - 支持...

    java中高级面试题十大总结

    - Java的内存分为堆内存(Heap)和栈内存(Stack),对象主要在堆中分配,而局部变量在栈中分配。 - 垃圾回收(Garbage Collection, GC)是Java自动管理内存的重要机制,它负责清理不再使用的对象,避免内存泄漏。...

Global site tag (gtag.js) - Google Analytics