`
kxmd2008
  • 浏览: 4445 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java中的栈内存和堆内存

    博客分类:
  • java
阅读更多

1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.

2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)

3. 堆:存放所有new出来的对象。

4. 静态域:存放静态成员(static定义的)

5. 常量池:存放字符串常量和基本类型常量(public static final)。

6. 非RAM存储:硬盘等永久存储空间




引用变量是普通变量,定义时所在栈中分配内存,引用变量在程序运行到作用域外释放。而数组和对象本身在堆中分配,

即使程序运行到使用new产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放,数组和对象

本身占用的堆内存也不会被释放。数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占

着内存, 在随后的一个不确定的时间被垃圾回收器释放掉。这个也是java比较占内存的主要原因。

 

分享到:
评论

相关推荐

    Java中栈内存和堆内存详解

    Java中栈内存和堆内存详解,非常容易理解

    Java中堆内存与栈内存分配浅析

    ### Java中堆内存与栈内存分配浅析 #### 一、引言 在Java编程语言中,内存管理是一项至关重要的技术。程序运行时所使用的内存主要分为两类:堆内存(Heap Memory)和栈内存(Stack Memory)。理解这两种内存类型的...

    Java中堆内存和栈内存详解

    ### Java中堆内存和栈内存详解 #### 一、引言 在Java编程语言中,内存管理是一项核心技能。为了更好地理解和使用Java,必须清楚地了解堆内存与栈内存的区别及其工作原理。本文将深入探讨Java中堆内存与栈内存的概念...

    Java栈内存与堆内存

    Java把内存划分成两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过...

    Java中堆内存和栈内存详解.doc

    Java编程语言将内存分为两种主要区域:栈内存和堆内存,这两种内存各有其特定的作用和管理方式。 栈内存主要用于存储程序执行过程中的局部变量。每当一个函数或方法被调用时,系统会在栈中为该函数开辟一块内存空间...

    Java 中的堆和栈

    在Java中,内存主要分为两个区域:栈内存和堆内存。这两部分内存各自有不同的特点和用途。 首先,栈内存主要负责存储基础数据类型(如byte, short, int, long, float, double, boolean, char)和对象的引用。当在...

    Java中的堆和栈

    Java程序运行时的内存主要分为两大区域:**堆内存**和**栈内存**。这两种内存区域有着各自独特的用途和管理机制,对理解和优化Java程序至关重要。 #### 二、栈内存 栈内存主要用来存储局部变量、方法调用信息以及...

    Java中堆内存和栈内存详解文.pdf

    Java编程语言将内存划分为两种主要区域:栈内存和堆内存。栈内存主要用来存储基本类型(如int、char)的变量和对象的引用,而堆内存则用于存储通过`new`关键字创建的对象和数组。 栈内存的工作方式类似于数据结构中...

    内存中的堆与栈区别 内存中的堆与栈区别

    "内存中的堆与栈区别" 在程序中,内存分为四块,其中有一块用于存放代码,这里我们不讨论,这四块分别是:全局区(静态区)、文字常量区、栈区和堆区。 全局区(静态区) 全局变量和静态变量都存储在这块区域,与...

    JavaSE基础篇 -- jdk配置,数组及其应用,栈和堆内存图解(Java源码)

    在这个主题中,我们将深入探讨JDK的配置、数组的应用以及栈和堆内存的图解,同时通过具体的Java源码来加深理解。 首先,JDK(Java Development Kit)是开发和运行Java应用程序必不可少的软件包。配置JDK主要包括...

    Java 中的堆和栈.doc

    Java编程语言将内存划分为两种主要区域:栈内存和堆内存。栈主要用于存储基本类型变量和对象的引用,而堆则是用于存储由`new`关键字创建的对象和数组。 栈内存的特点在于它的快速存取和自动管理。当在代码中定义一...

    java内存分配之常量池,栈,堆1

    栈和堆之间的区别在于,栈中的数据生命周期短暂,随方法调用结束而释放,而堆中的对象生命周期较长,直到垃圾回收。栈内存速度快但容量有限,堆内存容量大但速度相对较慢。此外,栈中的数据可以被多个线程共享,而堆...

    区别Java中堆与栈区别Java中堆与栈

    在 Java 中,栈和堆都是自动管理的,程序员不能直接地设置栈或堆。Java 的垃圾收集器会自动收走这些不再使用的数据。 栈有一个很重要的特殊性,就是存在栈中的数据可以共享。例如,int a = 3; 和 int b = 3;,它们...

    Java数据结构之栈与堆

    Java 数据结构中的栈和堆是两种重要的内存管理方式,它们在程序执行时分别扮演着不同的角色。栈主要负责存储程序运行过程中的局部变量、函数调用等信息,而堆则是用于动态分配对象内存的区域。 栈的优势在于其存取...

    java中的栈(深层了解java虚拟机对对象的内存分布)

    在Java编程语言中,理解栈(stack)和堆(heap)的概念及其工作原理对于深入掌握Java虚拟机(JVM)如何管理内存至关重要。栈和堆都是在RAM中用于存储数据的关键区域,但在功能、使用场景和管理机制上存在显著差异。 #### ...

Global site tag (gtag.js) - Google Analytics