`
zhangchunxiao
  • 浏览: 16613 次
社区版块
存档分类
最新评论

浅谈java中的堆栈(一)

    博客分类:
  • Java
 
阅读更多

Java把内存分成两种,一种叫做堆内存,一种叫做栈内存:在执行过程中会划分4个内存区域(heap、stack、data segment、code segment)。

java开始执行会把代码加载到code segment区域然后找到main方法开始执行;

heap(堆):new出来的东西放到这里;
stack(堆栈):局部变量;
data segment:静态变量或字符串常量;
code segment:存放代码;

 

举例:

Student stu = new Student();
//stu是对象Student()的引用,stu存放在栈中,可以把stu理解为一个指针,指向所存放在堆中的对象.
//当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,
//java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用.
//堆内存用于存放由new创建的对象和数组.在堆中分配的内存,由java虚拟机自动垃圾回收器来管理.

  简述下堆与栈的区别:

1.stack(堆栈)的空间由操作系统自动分配和释放,heap(堆)的空间是手动申请和释放的,heap常用new关键字来分配。

2.stack(堆栈)空间有限,heap(堆)的空间是很大的自由区。

3.在Java中,若只是声明一个对象,则先在栈(stack)内存中为其分配地址空间,若再new一下,实例化它,则在堆内存中为其分配地址。

举例:

Object a =null;//这样定义的在栈区,只在栈内存中分配空间.
Object b =new Object(); //这样定义的就在堆区,在堆内存中分配空间.

 

 

 

分享到:
评论

相关推荐

    浅谈Java语言评价胜出的8大技术优势

    ### 浅谈Java语言评价胜出的8大技术优势 #### 1. 强大的API支持 Java提供了非常丰富的API支持,包括网络编程中的Socket API、数据库操作中的SQL API、图形用户界面的Swing和AWT API等。这些API不仅功能强大而且...

    浅谈Java异常.pdf

    在Java的实际编程中,有效的使用异常处理机制是一项重要的技能,它要求程序员不仅需要掌握Java的异常类库,还需要了解如何合理地设计异常处理逻辑。比如在《Effective Java》这本书中就提到了很多关于异常处理的最佳...

    浅谈Java自定义异常在教学中的教与学

    自定义异常是Java异常处理机制中的一个重要组成部分,其在教学和实际软件开发中的重要性不容忽视。 首先,了解自定义异常出现的背景是必要的。Java的标准异常库为开发者提供了丰富的异常类,例如空指针异常、数组...

    浅谈Java程序的性能优化

    【Java程序性能优化】在Java程序开发中,性能优化是一个重要的环节,因为它直接影响到程序运行效率和用户体验。本文将从基础优化和GUI设计时的优化两个方面探讨如何提升Java程序的性能。 一、基础优化 1. **避免...

    浅谈JAVA集合框架及其应用.zip

    Java集合框架是Java编程语言中一个至关重要的组成部分,它为数据存储、管理和处理提供了丰富的类和接口。这个框架包括了数组、链表、队列、堆栈、映射等多种数据结构,极大地提高了开发效率和代码的可读性。在本文中...

    浅谈为什么java命令运行class文件出现异常共7页.p

    在本资料"浅谈为什么java命令运行class文件出现异常共7页.pdf"中,可能详细讨论了这些常见问题及其解决方法。由于提供的压缩包中仅有一个名为"赚钱项目"的文件,这似乎与Java编程无关,因此可能不是解决上述问题的...

    浅谈JAVA 异常对于性能的影响

    总结来说,Java异常处理的性能影响主要来自两个方面:一是处理异常时执行的额外代码,二是堆栈轨迹的生成和存储。尽管异常处理有一定的性能成本,但这并不意味着我们应该完全避免使用异常。异常为处理程序错误提供了...

    浅谈Java数组的一些使用方法及堆栈存储

    Java数组的使用方法不仅包括基本的操作如初始化、遍历、排序、复制和扩展,还涉及其在内存中的存储机制,即堆栈内存的分配和释放。 一、Java数组的定义和初始化 1. 数组定义:Java中数组的声明方式为数据类型[] ...

    浅谈基于Java的异常处理机制.pdf

    Java异常处理机制是Java语言中一个非常重要的特性,它能够有效地提高程序的健壮性和安全性。异常处理机制允许程序在运行时发生错误或者意外情况时,能够给出明确的错误信息,并根据异常的类型进行相应的处理,而不是...

    浅谈Java程序运行机制及错误分析

    浅谈Java程序运行机制及错误分析 Java程序运行机制是指Java虚拟机(JVM)的运行机制和Java程序的执行过程。Java虚拟机是可运行Java代码的假想计算机,以实现Java语言的跨平台特性。Java程序的运行需要经过编写、...

    浅谈java中异常抛出后代码是否会继续执行

    在Java编程语言中,异常处理是一个关键的概念,用于处理程序执行期间可能出现的错误或异常情况。异常(Exception)是程序运行时发生的不正常情况,它中断了正常的代码流程。那么,当Java中抛出异常后,代码是否会...

    浅谈log4j 不打印异常堆栈

    浅谈log4j 不打印异常堆栈 本文主要介绍了log4j 不打印异常堆栈的原因和解决方法,该问题在实际开发中可能会给程序员带来困扰。 知识点1: JVM 的优化机制 JVM 为了性能会做优化,如果频繁的抛出某个异常,会...

    浅谈Java异常的Exception e中的egetMessage()和toString()方法的区别

    在这种情况下,`e.getMessage()`可能返回一个空字符串,因为在Java标准库中,`NullPointerException`默认不设置具体的错误消息。而在示例代码2中,尝试执行除零操作会导致`ArithmeticException`,`e.getMessage()`会...

    OGNL表达式语言浅谈.pdf

    首先,OGNL将Action对象和其他数据压入一个名为ValueStack的结构中,这个ValueStack类似于一个遵循堆栈原则的List,但具备更高级的功能。用户可以通过OGNL表达式在ValueStack中遍历和操作对象及其属性。在JSP页面中...

    浅谈Java中常用数据结构的实现类 Collection和Map

    在Java编程中,数据结构是组织、存储和处理数据的关键工具。`Collection`和`Map`是Java集合框架的核心组成部分,它们提供了丰富的数据结构实现,方便开发者高效地管理对象。 `Collection`接口是最基础的集合接口,...

    浅谈Javascript数组的使用

    这在JavaScript中是一种特殊的行为,并不同于其他语言如Java或C#,在那里for...in通常用于对象属性的遍历。 至于数组的常用方法,JavaScript提供了非常丰富的数组操作方法。push()和pop()方法允许数组模拟堆栈的...

    浅谈Linux环境下并发编程中C语言fork()函数的使用

    在C语言中实现多线程与Java不同,需要更多地手动管理。`fork()`创建子进程后,子进程会从`fork()`调用之后的指令开始执行,避免了无限递归创建子进程的问题,否则可能导致系统资源耗尽。 关于提供的代码示例,以下...

    浅谈php的优缺点

    2. **语法不严谨**:PHP的变量无需声明即可使用,这在某些编程语言中(如C、Java、C++)被视为不规范,可能导致一些潜在的错误。 3. **解释执行机制**:PHP的解释器每次执行完页面后会回收所有资源,这意味着无法在...

    我的编程感悟(中文PDF)(共37M二分卷)分卷一

    6.1 浅谈代码优化 138 6.2 并不仅仅是汇编 139 6.2.1 在算法实现时减少上下文的依赖关系 139 6.2.2 低效的静态变量 140 6.2.3 数据的组织 141 6.2.4 消除除法 142 6.2.5 避免过大的循环 144 6.3 汇编和C/C++的混合...

Global site tag (gtag.js) - Google Analytics