Java 如何有效地使用静态变量?

Java 如何有效地使用静态变量?,java,android,performance,static,Java,Android,Performance,Static,我想知道一些基本的东西 我正在开发一个android应用程序,因此它导致了内存管理问题。 最近,我观看了一段与谷歌内存管理相关的视频,发现在活动中使用静态变量会导致内存泄漏,即使在活动的方向改变时也是如此,因为它会在活动中保留对其他对象的引用。视频中的人说,在静态方法的帮助下使用静态变量将解决这个问题,我想知道静态方法如何解决这个问题? 我想知道在我的应用程序中使用静态变量的最佳方法。例如,我有一个全局类,其中存储了一些静态变量,因为它的名称表明这些值将由不同的活动评估和修改, 作为一个例子,我

我想知道一些基本的东西

我正在开发一个android应用程序,因此它导致了内存管理问题。 最近,我观看了一段与谷歌内存管理相关的视频,发现在活动中使用静态变量会导致内存泄漏,即使在活动的方向改变时也是如此,因为它会在活动中保留对其他对象的引用。视频中的人说,在静态方法的帮助下使用静态变量将解决这个问题,我想知道静态方法如何解决这个问题?

我想知道在我的应用程序中使用静态变量的最佳方法。例如,我有一个全局类,其中存储了一些静态变量,因为它的名称表明这些值将由不同的活动评估和修改, 作为一个例子,我有一个静态变量WIDTH,现在像这样更新它

Global.WIDTH=12

或者像
int width=Global.width
从不同的活动中,这是一个正确的方法,还是必须使用静态方法来获取宽度,如
int width=Global.getWidth(),那么这两者之间有什么区别,最好的方法是什么

在处理静态变量时,我们还必须记住哪些重要事项?


谢谢大家,很抱歉有这么长的描述…

静态变量可能会导致内存泄漏,因为它们永远不会超出范围,但是如果您只有一些原语,例如int或long,那么就不会有问题

如果开始引用静态变量中的对象,尤其是集合,则需要小心。如果集合从未超出范围,则其中包含的任何对象都不会超出范围,它们引用的任何对象也不会超出范围,因此集合可能会继续增长,并消耗更多的内存


不过,问题中的变量(可能是int)是可以的。

当字段/方法必须属于类而不是任何对象引用时,请使用
static
。如果在
Activity
s中使用,我建议使用
static final
将字段声明为常量,而不是在那里使用普通的wild
static
字段。感谢您的快速响应。。我不能将其声明为final,因为它的值将根据计算结果随设备的不同而变化。您可以将其声明为
static final
,并在
static{}
方法中定义值。请注意,即使这些值是动态的,它们也只应在应用程序启动时加载一次,而不是在应用程序的任何时候加载。如果您想为景观可视化设置不同的宽度和高度,请再添加两个字段,而不是重新计算值。Hmm。。谢谢你,这是个好主意。还有一件事,当我们直接从字段和使用静态方法访问这些值时,在保留引用方面会有任何不同。在卸载类之前,任何
静态
字段都将保留在内存中,所以我想说,只将
静态
对象引用作为方法的局部变量或参数,不要用它来直接填充一个类的字段。谢谢Nick的回答,我用int作为例子,我想知道静态字段和静态方法的使用有什么区别吗?我想不出使用静态方法会对内存产生什么影响。Global.width和Global.getWidth()之间的唯一区别是,该方法允许您在调用时计算值。方法中声明和使用的任何变量都不会导致内存泄漏,因为一旦方法结束,它们就超出范围。