java - 何时创建变量(内存管理)

标签 java variables memory-management reference garbage-collection

您创建一个变量来存储您可以在将来引用该变量的值。我听说您必须在使用完一个变量后将其设置为“null”,这样垃圾收集器才能访问它(如果它是一个字段变量)。

如果我有一个不再引用的变量,删除我正在使用的引用/值变量(并且只在需要时使用数字)会节省内存吗?例如:

int number = 5;
public void method() {
    System.out.println(number);
}

这会比将“5”插入 println 方法占用更多空间吗?

我有一些整数我再也没有在我的代码中引用(游戏循环),但我看到其他人在真正不需要它们的东西上使用引用变量。一直在研究内存管理,所以请让我知道,以及您必须提供的有关管理内存的任何其他建议

最佳答案

I've heard that you must set a variable to 'null' once you're done using it so the garbage collector can get to it (if it's a field var).

这很少是个好主意。只有当变量是对对象的引用时,您才需要执行此操作,该对象的生命周期将比它所引用的对象长得多。

假设你有一个类 A 的实例,它引用了一个类 B 的实例。类 B 非常大,你不需要它很长时间(这种情况很少见)你可以 null 输出对 B 类的引用以允许收集它。

处理生命周期不长的对象的更好方法是将它们保存在局部变量中。当它们超出范围时,它们自然会被清除。

If I were to have a variable that I won't be referring to agaon, would removing the reference vars I'm using (and just using the numbers when needed) save memory?

在 GC 清理包含原语的对象之前,您不会为原语释放内存。

Would that take more space than just plugging '5' into the println method?

JIT 足够聪明,可以将不会改变的字段变成常量。

Been looking into memory management, so please let me know, along with any other advice you have to offer about managing memory

使用内存分析器而不是追踪 4 个字节的内存。如果你有一部智能手机,大约 400 万字节可能值得追求。如果你有一台 PC,我不会同时使用 400 万字节。

关于java - 何时创建变量(内存管理),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20863989/

相关文章:

java - SWT StyledText - 自动突出显示(或自动选择)

java - Java 中的扩展对内存有什么影响?

ios - Unwind segue 不会释放我的 View Controller

objective-c - 内存管理与方法调用

java - 如何为内存中的 HSQL 编写自定义函数

java - Google Guava/Equivalence/不同的 equals() 和 hashCode() 方法实现

javascript - GSAP TimeLineLite.to() 将变量传递给第三个参数不起作用。

要包含的 PHP 传递变量

java - 尝试在 JAVA 中处理 InstantiationException,编译器会抛出它

jquery - 将变量传递给 jQuery .load 函数