`
xiao_feng68
  • 浏览: 104892 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

变量存储与作用域

阅读更多
对于JVM而言,没有块级别的作用域,在进入方法体时,局部变量所占用的内存就已经在Java栈上分配好了,
直到方法结束,Java栈上的局部变量内存才被回收,不存在方法执行途中回收的问题。

不过要注意,这儿的内存仅仅是指Java栈上的内存(对于对象而言,也就是非primitive的变量,仅仅是对象的引用)
而Java对象所分配的内存,是位于Java堆中。

就楼主的例子,不论holdMemory定义在循环外、或者循环内,都不影响每一次循环中创建的new HoldMemory()的回收,因为,每一次循环的执行,都重写了同一个变量引用,从而导致上一次循环holdMemory对象引用的丢失,即原则上,每开始一个新的循环,上一个循环创建的holdMemory对象都是可回收的,这和holdMemory变量定义在循环体内外无关。

小结一下:
1、Java栈上的局部变量(primitive值、或者对象引用)所占用的内存,在方法结束后,随Java栈的回收而回收,与变量定义在循环体内外无关;
2、Java对象(使用堆内存)在每次循环后,自动丢弃上一次循环所保留的对象引用,从而该对象处于可回收状态。这也和变量定义在循环体内外无关;
3、局部变量定义在循环体内外,仅仅对代码的可读性有影响。对代码执行没有区别。
分享到:
评论

相关推荐

    C++基础--变量的作用域和存储区

    外部变量(在函数外部定义,无`static`关键字)的生命周期与程序相同,但作用域仅限于定义它的文件,除非通过`extern`声明。寄存器变量如前述,试图存储在CPU寄存器中以优化性能。 总的来说,理解和掌握C++中的变量...

    C语言、变量和函数的作用域与生存期

    C语言中的变量和函数的作用域与生存期是编程中至关重要的概念,它们直接影响到代码的组织和执行效率。首先,我们来详细了解这些知识点。 **作用域(Scope)**: 作用域指的是变量或函数在程序中可见的范围。C语言中...

    深入理解变量作用域

    #### 二、全局作用域与局部作用域 1. **全局作用域** - 定义:在JavaScript中,如果一个变量在任何函数外部声明,则该变量处于全局作用域下。这意味着它可以在程序的任何地方被访问。 - 特性: - 全局变量在整个...

    局部变量 全局变量和存储分类 局部变量作用域和生存期PPT课件.pptx

    局部变量、全局变量和存储分类。 在 C 语言中,变量是程序中最基本的存储单元。变量可以分为局部变量和全局变量两种。局部变量是指在函数内部定义的变量,仅在该函数内部有效。全局变量是指在函数外部定义的变量,...

    ChoiceScript引擎开发:变量管理与条件判断+ChoiceScript引擎概述+变量类型与声明+.变量赋值与初始化+变量作用域与生命周期+全局变量与局部变量的区别+变量的持久化存储

    变量作用域与生命周期.docx ChoiceScript引擎开发:变量管理与条件判断_(5).全局变量与局部变量的区别.docx ChoiceScript引擎开发:变量管理与条件判断_(6).变量的持久化存储.docx ChoiceScript引擎开发:变量...

    局部变量全局变量和存储分类局部变量作用域和生存期实用教案.pptx

    理解这两者的区别和作用域对编写高效、可维护的代码至关重要。 1. 局部变量: 局部变量的生命周期始于定义它的代码块开始执行时,终止于代码块结束。这意味着在一个函数内部定义的变量只在该函数内部可访问。在不同...

    C语言中变量的作用域.pdf

    在C语言中,变量的作用域是程序设计时必须准确理解和使用的概念。变量的作用域决定了变量能够在程序的哪个部分被访问和修改。理解变量的作用域有助于编写出结构清晰、易于维护的代码。 首先,变量可以分为自动存储...

    局部变量 全局变量和存储分类 局部变量作用域和生存期PPT学习教案.pptx

    `register`类型试图将变量存储在CPU寄存器中以提高速度,但实际能否实现取决于可用寄存器的数量。`static`类型的变量具有静态存储,无论函数是否被调用,它们的值都会保留。如果在函数内部定义,`static`变量的作用...

    全局变量及其作用域和生存期函数的存储分类PPT课件.pptx

    在编程语言中,全局变量是一种特殊类型的变量,它的作用域和生存期与函数的存储分类息息相关。本课件将详细介绍全局变量的定义、作用域、生存期和存储分类,并通过实例解释全局变量的使用和注意事项。 一、全局变量...

    C语言的变量的作用域和存储类型

    介绍了C语言的变量的作用域和存储类型,一维字符数组和字符串变量等。

    c#从入门到实践; 示例 使用变量记录用户的登录名;变量的作用域

    在C#编程语言的学习过程中,从入门到实践的旅程中,掌握变量的使用和理解其作用域是非常关键的步骤。变量是程序中存储数据的基本单元,它们允许我们存储和处理各种信息,比如用户登录名。在C#中,变量的作用域决定了...

    PHP中的变量作用域

    3. **变量符号表**:一个假想的概念,用来表示存储当前作用域内的变量的表格结构。 #### 三、PHP变量作用域概述 PHP中的变量作用域主要包括以下几种类型: 1. **全局作用域**:在整个脚本文件范围内都可被访问的...

    变量的作用域与生存期PPT学习教案.pptx

    变量的作用域和生存期是编程语言中的核心概念,它们决定了变量在程序中的可见性和生命周期。在C语言等静态类型的编程语言中,理解这些概念对于编写高效、无误的代码至关重要。 1. **变量的作用域(空间特性)** - ...

    C++ 炼气期之变量的生命周期和作用域.doc

    "C++ 变量的生命周期和作用域" C++ 中的变量生命周期和作用域是两个相关但不同的概念。变量的生命周期指从变量被分配空间到空间被收回的这个时间段,而变量的作用域则指变量能使用的范围。 变量的声明位置决定了...

    PHP变量的定义及作用域

    2. **全局作用域(Global Scope)**:在函数外部定义的变量具有全局作用域,可以在整个脚本中访问,除非它们被包含在某个函数内部。 ```php $globalVar = "This is a global variable."; function myFunction() ...

    JAVA程序设计课件-变量的作用域.pptx

    【JAVA程序设计与OCJA认证】\n\n在学习JAVA程序设计时,了解变量的作用域是至关重要的基础知识,尤其对于获得OCJA(Oracle Certified Java Associate)认证的考生来说,掌握这一点是必不可少的。变量的作用域决定了...

    JavaScript 基础函数_深入剖析变量和作用域

    同时,变量作为存储数据的容器,在JavaScript中拥有不同的作用域规则,决定了变量的可访问范围。 ### 函数的定义和调用 在JavaScript中,函数可以通过两种方式定义,分别是函数声明和函数表达式。函数声明是一种...

    全局变量及其作用域和生存期函数的存储分类PPT学习教案.pptx

    全局变量在编程中扮演着特殊的角色,它们是可以在程序任何地方(函数外部)被定义的变量,具有较宽的作用域和较长的生存期。全局变量的存储类别通常为静态存储,这意味着它们在整个程序运行期间都会存在于内存中。 ...

    变量的存储小结

    综上所述,了解和掌握C语言中的变量存储类、类型、存在期和作用域,对于编写高效、可靠的程序至关重要。这不仅仅涉及简单的语法知识,还关系到内存管理、程序设计思想以及代码的可维护性。对于初学者而言,通过理解...

    c_全局变量

    "C语言中的变量存储类别和作用域" C语言中变量的存储类别和作用域是非常重要的概念。变量的存储类别决定了变量的生命周期和作用域,而变量的作用域则确定了变量的可见性和生命周期。在C语言中,变量可以分为局部...

Global site tag (gtag.js) - Google Analytics