java static 内存压力

来源:百度知道 编辑:UC知道 时间:2024/05/26 22:41:46
众所周知,static修饰的方法或是变量是独享一块内存空间且常驻内存的。我看到有好多帖子说为了降低性能消耗,把变量或是方法做成static的,目的是不用多次的new出对象来占用内存。
我的问题是:当把一个方法做成static时,看似会降低消耗,但如果有许多个类都在调用这一个方法。都去同一个内存地址里运行,会不会给内存带来寻址的压力呢?
或许我说的有些不大明白,举个例子吧:
比如有一部影片,只允许在固定的一个电影院里播放,当全国人民都来看时(有些夸张,嘻嘻),那影院会不会压力很大?倒不如copy出许多份来在不同的地方播放来的实在些。

方法的static和非static效果是一样的。

非static的方法必须有实例来调用,但函数本身只占用固定的内存用于执行。

static方法无需实例可以直接调用。

所以没有什么区别。要真要说区别,那就是非static的要额外生成一个占用内存的对象。

对于对象实例,非static的变量,每个实例都会有一块内存来存储这个变量。staitc 的变量所有实例共享一块内存。

问题补充:或许我说的有些不大明白,举个例子吧:
比如有一部影片,只允许在固定的一个电影院里播放,当全国人民都来看时(有些夸张,嘻嘻),那影院会不会压力很大?倒不如copy出许多份来在不同的地方播放来的实在些。

你说的这个是电影院的处理压力= CPU压力。
而影院的数目代表内存占用的数量

恩,你说的很对....看看到底全国人民会不会来看了。..