垃圾收集器对java中的静态变量或方法起作用吗?

2024-02-14

我正在创建一个示例演示程序,以便让我了解如何使用垃圾收集器在 java 中释放静态变量、方法的引用?

我使用弱引用是为了不阻止垃圾收集器。

Class Sample

public class Sample {

    private static String userName;
    private static String password;
    static {
        userName = "GAURAV";
        password = "password";
    }
    public static String getUserName(){
        return userName;
    }
    public static String getPassword(){
        return password;
    }
}

Class User

import java.lang.ref.WeakReference;

public class User {

    public static void main(String[] args) {
        /**
         * Created one object of Sample class
         */
        Sample obj1 = new Sample();
        /**
         * I can also access the value of userName through it's class name 
         */
        System.out.println(obj1.getUserName()); //GAURAV
        WeakReference<Sample> wr = new WeakReference<Sample>(obj1);
        System.out.println(wr.get());  //com.test.ws.Sample@f62373
        obj1 = null;
        System.gc();
        System.out.println(wr.get()); // null
        /**
         * I have deallocate the Sample object . No more object referencing the Sample oblect class but I am getting the value of static variable. 
         */
        System.out.println(Sample.getUserName()); // GAURAV
    }

}

静态字段与类相关联,而不是与单个实例相关联。

当保存类的类加载器卸载时,静态字段将被清除。在许多简单的程序中,这永远不会。

如果您希望字段与实例关联并清理,那么实例就会被清理,请将它们设置为实例字段,而不是静态字段。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

垃圾收集器对java中的静态变量或方法起作用吗? 的相关文章

随机推荐

  • 使用外部数据的 D3 条形图

    我使用 d3 js v4 制作了一个条形图 我尝试使用外部数据文件 tsv 文件 它给出了以下错误 错误 属性高度 预期长度 NaN 匿名 d3 min js 2 o d3 min js 2 yn d3 min js 2 mn d3 min
  • listview 没有在带有 viewpager 选项卡的片段中刷新

    我遇到了在 viewpager 样式选项卡内使用 listview 和片段的问题 该选项卡在 github 上的 jakewharton s Android ViewPagerIndicator 示例中给出 我对三个选项卡使用相同的库 每个
  • 我什么时候应该在 WPF 中使用依赖属性?

    我什么时候应该在 WPF 中使用依赖属性 它们是静态的 因此与使用 NET 属性相比 我们可以节省大量内存 相对于 NET 属性使用依赖属性的其他好处包括 1 无需检查线程访问 2 提示渲染包含元素 ETC 所以看来我应该始终在使用 WPF
  • OpenCL clBuildProgram 缓存源代码,如果 #include 源代码发生更改,则不会重新编译

    我用opencl实现了一个项目 我有一个包含内核函数的文件 内核使用的函数包含在单独的头文件中 但是当我更改包含的文件时 有时会应用更改 有时则不会 这让我很困惑应用程序是否有错误 我检查了 stackoverflow 中的其他帖子 发现
  • 虚假 Ajax 请求

    为了检查ajax请求的提交情况 当用户提交表单时 我使用jasmine 1 实现了以下测试 测试已成功通过 但查看 javascript 控制台时出现以下错误500 Internal Server Error 由于我不关心服务器响应 所以我
  • 以集群模式在同一物理节点上运行 Storm nimbus 和supervisor

    我现在有一个包含 2 个物理节点的 Storm 集群 我在跑storm nimbus在节点 1 上和storm supervisor在节点 2 上 看起来我的所有拓扑都仅在节点 2 管理节点 上运行 我也应该在节点 1 上运行主管吗 Tha
  • 如何使用 for_each 删除 STL 映射中的每个值?

    假设我有一个 STL 映射 其中的值是指针 并且我想将它们全部删除 我如何表示以下代码 但使用 std for each 我很高兴找到使用 Boost 的解决方案 for stdext hash map
  • 管理器中缺少应用程序图标

    我最近迁移了我的应用程序以支持 iOS7 并在此过程中更新了我的应用程序图标以使用资产目录 这一切在应用程序中都运行良好 但是 在 Organizer 和 TestFlight 中 我的应用程序图标丢失了 同样的情况也发生在 TestFli
  • Google Maps API v3 向每个标记添加信息窗口

    注意 我使用的是 Google Maps API v3 我正在尝试为我在地图上放置的每个标记添加一个信息窗口 目前我正在使用以下代码执行此操作 for var i in tracks racer id data points values
  • 从 SJSIR “手动”构建 JS

    我需要在运行时从 sjsir 文件构建一个 js 文件来实现插件系统 这样就无法在编译时与我的其余编译一起完成 我曾经在 0 6 3 中使用以下代码实现相同的过程 但它似乎已被弃用 您建议使用什么算法来实现与 0 6 13 相同的操作 谢谢
  • 更改博客主题(blogdown+netlify)

    我按照 Yihui 的教程并使用创建了一个网站blowdown github and netlify 现在 我想更改我的网站的主题 问题是我有几篇文章产生了很多情节 因此 当我在本地创建一个新网站并添加我的帖子时 git push失败 我怀
  • Xcode 12 Beta - 找不到模拟器运行时

    我已经安装了 Xcode 12 beta 2 我尝试通过 Mac OS Catalina 上的 Jenkins 运行我们的 xamarin 项目 它失败并出现以下错误 当我从 Mac Visual studio 构建相同的项目时 它成功了
  • 有没有办法在网页开发中使用加色混合?

    我有一个可以使用的网页设计加法混色 http en wikipedia org wiki Additive color 想要的效果是 红色方块覆盖绿色方块 重叠区域呈现黄色 有没有什么好方法可以使用标准工具 CSS CSS 透明度 不透明度
  • 内联块+最小/最大宽度行为

    我在许多浏览器 FF Opera Ie 中看到我给它们的元素 内联块 和 最小 最大宽度 它们的宽度自动设置为 最小宽度 而不是最大宽度 如预期的那样 这是正常行为吗 我可以用CSS方式解决它 具有最大宽度的内联块元素 吗 我了解 floa
  • 快速输入输出功能

    define getcx getchar unlocked inline void inp int n fast input function n 0 int ch getcx int sign 1 while ch lt 0 ch gt
  • 为什么 tkinter 的 after() 函数会冻结我的窗口?

    我正在使用创建 dodger 的副本tkinter 我面临着计时对象移动的问题 有人告诉我时间模块不能很好地工作tkinter 因此我应该使用after 反而 但是 我面临着同样的问题after 功能就像我对时间模块所做的那样 这是我的代码
  • 特定git命令的颜色输出

    我正在编写一个运行 git 命令并捕获输出的工具 并且我希望将输出着色 Git 注意到该工具不是终端 因此color ui需要设置为always 我真的不想在全局 存储库配置文件中设置它 因为它会与使用 git 的其他程序混淆 这git b
  • 循环访问 Azure 管道中的变量

    我有一个文本文件 其中有两个名称client1 and client2 我有一个 Powershell 脚本来读取文本文件 我对它的理解是它已经创建了一个数组 clientvariable Get Content Path FilePath
  • 计划错误:尚未使用 Cloud Resource Manager API

    当我尝试跑步时 steps id Plan Terraform name hashicorp terraform light args plan 在 Cloud Build 中 我收到错误 Error Error reading Proje
  • 垃圾收集器对java中的静态变量或方法起作用吗?

    我正在创建一个示例演示程序 以便让我了解如何使用垃圾收集器在 java 中释放静态变量 方法的引用 我使用弱引用是为了不阻止垃圾收集器 Class Sample public class Sample private static Stri