`

静态变量回收么?

    博客分类:
  • GC
阅读更多

应该是类被载入时开始,一直到类的Class对象被释放,因为在一般的情况下,没有释放这些类的Class对象。但在一些应用中,类是可以被释放了再载入的,一个很好的例子就是JSP被修改后,JSP容器会重新编译成SERVLET类,并重新载入,这样,老的类Class对象就被释放了,并重新载入了编译后的类,构造该JSP的Class对象。老的Class对象被从内存中清除当然他的生命期也就结束了,所以Class对象的生命期是载入到释放这个期间中

 

现在很多应用服务器都宣称他们可以实现热部署,其根本一点就是要处理好热部署的类Class对象释放和再载入的问题。因为很多与他关联的东西将受到影响,这个是题外话

static成员在全局栈空间内,不在heap,GC不起作用  
只有进程消失JVM自己收回,况且你还写了代码访问它,  
就算普通对象也不会回收,不信你试试

分享到:
评论

相关推荐

    CC++中的静态全局变量,静态局部变量,全局变量,局部变量的区别

    - 设计和使用访问静态变量的函数时,需考虑重入问题,因为静态变量都位于静态数据存储区,全局可见。 - 需要一个可重入的函数时,应避免在函数中使用`static`变量,以免出现内部存储器问题。 - 当函数返回值为指针...

    全局变量、局部变量、静态变量即内存管理

    3. 全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后有系统释放。 4. 文字常量...

    C++ 静态成员变量 嵌套类分配回收内存

    在深入探讨"C++ 静态成员变量与嵌套类的内存分配回收"这一主题之前,我们首先需要理解几个核心概念:静态成员变量、嵌套类以及它们在内存管理中的角色。 ### C++中的静态成员变量 静态成员变量是类的一个特性,它...

    浅谈Android中关于静态变量(static)的使用问题

    - 单例模式下的对象,尽管通过静态变量持有,也可能在Android的特定情况下被回收。 4. **Application对象的可靠性**: - Application类在Android中作为一个全局单例,但它同样依赖于进程。进程被杀掉时,...

    Java成员变量局部变量静态变量成员方法全局方法等概念的区

    这可能是指文件内容详细阐述了这些概念之间的差异,如成员变量和局部变量的生命周期、作用域、初始化时间以及静态变量与实例变量的共享特性,以及成员方法和静态方法的调用方式等。 理解这些基本概念对于编写有效...

    易语言静态变量初始化源码.zip

    5. **内存管理**:由于静态变量的存储在堆栈上,而非栈上,所以它们不会随着函数调用的结束而释放,这节省了内存分配和回收的时间,但也可能导致内存泄漏,尤其是在长时间运行的程序中。 6. **示例代码**:压缩包中...

    Java中static静态变量.pdf

    在Java编程语言中,`static`关键字是用来声明静态变量和静态方法的,这些成员属于类本身,而不属于类的任何实例。静态变量,也被称为类变量,是存储在内存的类区域,而实例变量则是存储在堆内存中,每个对象实例都有...

    Android-Application被回收引发空指针异常分析(消灭全局变量

    在Android应用开发中,"Android-Application被回收引发空指针异常分析(消灭全局变量)"是一个常见的问题,尤其对于新手开发者来说,可能会遇到这样的困惑。这篇文章主要探讨了当Application对象被系统回收后,如何...

    Java类加载器:静态变量初始化.docx

    Java 类加载器静态变量初始化机制详解 Java 类加载器是 Java 语言的核心组件之一,负责将 Java 字节码文件加载到内存中,以便 JVM 可以执行它们。在 Java 中,类加载器是通过委派机制来实现的,即一个类加载器可以...

    java中静态变量和实例变量的区别详细介绍

    在Java编程语言中,静态变量和实例变量是两种不同类型的成员变量,它们在内存中的分配、生命周期、以及使用方式上有着显著的区别。本篇文章将详细探讨这两种变量的差异。 1. 内存分配: - 静态变量:静态变量是...

    变量的存储类型、外部变量、static内部变量讲解

    - **外部静态变量**(全局变量前加上`static`):作用域限于声明它的源文件内,生命周期同样贯穿整个程序运行过程。 - **特点**: - 内部静态变量在每次函数调用时保留上次的值。 - 外部静态变量只在定义它的...

    浅谈静态变量、成员变量、局部变量三者的区别

    本文将深入探讨静态变量、成员变量(也称为实例变量)以及局部变量之间的主要区别。 首先,我们来看静态变量和成员变量的区别: A. 所属关系: 静态变量是属于类的,这意味着它们是类级别的变量,所有该类的对象都...

    Android静态变量的生命周期 简单介绍

    不过Android不太突出的进程概念,所以对静态变量的生命周期就会感觉模糊,这种模糊对于值类型是无所谓的,如果是静态的对象引用,则与内存回收、内存泄漏这些问题有关,有必要加深研究和理解。 一、静态变量在类被...

    static静态局部变量的使用技巧

    这意味着局部变量会在每次函数调用时被创建,并在函数返回时销毁,它所占用的内存会在不同的函数调用间回收和重用。 然而,当局部变量被声明为static静态局部变量时,情况就有所不同。static关键字改变了局部变量的...

    赋值后的静态句柄和实例莫名其妙消失了???在线等

    这种情况通常出现在使用面向对象编程(OOP)语言,如Java、C#或Python时,涉及到静态变量和对象生命周期的管理。让我们深入探讨这个问题,以找出可能的原因和解决方法。 首先,静态句柄通常指的是类中的静态成员...

    局部变量与全局变量区别,栈、堆和静态存储区的区别[借鉴].pdf

    3. 全局区(静态区)(static):全局变量和静态变量的存储是放在一起的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量、未初始化的静态变量在相邻的另一块区域。 在程序中,我们可以使用 static ...

    java 使用静态成员变量计算内存中实例化的对象数目

    静态变量被所有类的实例共享,而每个实例都有其自己的非静态变量副本。因此,静态变量在内存中只有一份,无论创建了多少个对象,它都不会因实例化而复制。 要使用静态成员变量计算内存中的对象数目,我们通常会在类...

    C++变量总结 说明各种变量

    在程序开始执行时,静态变量被初始化并分配内存,而在函数调用时,自动变量才分配空间并初始化,函数结束时,自动变量的空间会被回收。 变量的作用域决定了变量在何处可见和可使用。局部变量仅在其定义的函数或复合...

Global site tag (gtag.js) - Google Analytics