java - Java 中静态的最佳用途是什么

标签 java oop variables static

我在其他线程上阅读了开发人员关于静态变量使用的一些评论:

  1. 它会消耗内存:当我们退出定义/创建静态变量的类时,有没有办法释放静态变量占用的内存?
  2. 在内存管理方面使用 static 与 static Final 变量有什么区别(如果您无法避免使用它)。

我知道使用静态是违反OOPS概念的,内存管理很差,违背了封装的概念。如果我使用 5-6 个静态变量,影响会很大,以至于我不得不停止使用它。或者你们中的某个人可以建议我静态在 Java(一种面向对象的编程语言)中的实际使用?

最佳答案

It costs memory: Is there a way to release memory occupied by static variables when we exit from the class where they were defined/created?

好的。第 1 点 --> 所有变量无论静态还是其他都占用内存。因此它会消耗内存并不完全准确。

接下来,静态变量和实例变量之间的区别在于它们何时变得不可访问(准备好进行GC)。当您超出其范围时,实例级实例将变得无法访问,但对于静态引用引用的实例,除非显式设置为null,否则它们将是可访问的。

所以,

static Object o = new Object();
o=null ;

不将对象保留在内存中。如果未显式设置为 null o 指向的实例将一直徘徊,直到定义它的类被 GC 处理,这种情况发生在加载此类的类加载器被 GC 处理(假设引用未转义)时。

defeating the concept of encapsulation.

静态字段不会破坏封装。封装基本上不允许访问内部结构。关于这一点可能有多种争论,所以我不会讨论这个。

If I use 5-6 static variables will the impact be so big that I literally have to stop using it.

再次归结为第 1 点。静态是一种设计选择,而不是实现选择。在我看来,使用静态是一个失败的选择。

关于java - Java 中静态的最佳用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29098003/

相关文章:

java - 在 Java 中使用动态名称分配变量

java - 集合列表和子类初始化

JavaScript 使用构造函数设置变量

java - Kotlin 中类的静态对象列表

java - Activity 应该只在手机中的应用程序第一次运行时运行一次

java - 什么时候应该在 Java 中使用本地类?

java - 最佳实践是什么?

java - 在java文件中使用超链接

java - 理解静态修饰符的问题

java - 如何使用 RAW 文件夹保存多个音频文件