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

Vin*_*igh 7 java variables garbage-collection memory-management reference

您可以创建一个变量来存储将来可以引用该变量的值.我听说你必须在使用它之后将变量设置为'null',这样垃圾收集器才能到达它(如果它是一个字段var).

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

int number = 5;
public void method() {
    System.out.println(number);
}
Run Code Online (Sandbox Code Playgroud)

这会占用更多空间,而不仅仅是将'5'插入println方法吗?

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

Pet*_*rey 5

我听说你必须在使用它之后将变量设置为'null',这样垃圾收集器才能到达它(如果它是一个字段var).

这很少是一个好主意.如果变量是对比它所引用的对象长得多的对象的引用,则只需要执行此操作.

假设你有一个A类实例,它有一个B类实例的引用.B类非常大,你不需要它很长时间(非常罕见的情况)你可能会把null对B类的引用改为允许它被收集.

处理不能长寿的对象的更好方法是将它们保存在局部变量中.当它们超出范围时,它们会自然清理干净.

如果我有一个我不会引用agaon的变量,那么删除我正在使用的引用变量(并且只在需要时使用这些数字)可以节省内存吗?

您不会释放基元的内存,直到GC清除包含它的对象.

这会占用更多空间,而不仅仅是将'5'插入println方法吗?

JIT非常智能,可以将不变为常量的字段转换为常量.

一直在研究内存管理,所以请告诉我,以及有关管理内存的任何其他建议

使用内存分析器而不是追逐4个字节的内存.如果你有一部智能手机,那么400万字节的东西可能值得追逐.如果你有一台PC,我不会同时拥有400万字节.