当前位置: 首页 > 面试题库 >

静态成员是否有助于提高内存效率?

伍胡媚
2023-03-14
问题内容

如果我希望在一个对内存敏感的应用程序中的数千个实例中使用一个类,那么如果我将静态功能分解为静态成员,是否有帮助?

我想象静态方法和变量每个类存储一次,而对于非静态成员,每个实例必须存储一些东西。

使用成员变量,似乎很清楚,但是为方法存储了哪种数据?

我正在使用Java,但是我想像一些通用规则也可以在其他托管环境(例如.NET)中应用。


问题答案:

静态方法与非静态(实例)方法之间的唯一区别是,将一个额外的隐藏参数this)传递给实例方法,并且可以使用间接分派(如果是虚拟的)调用实例方法。没有占用额外的代码空间。

编辑:

我的答案集中在方法上,但仔细阅读后,我发现问题更多是关于静态数据。是的,因为静态数据只有一个副本,所以在某种意义上可以节省内存。当然,数据是否应该是静态的更多取决于数据的含义或用途,而不是节省内存。

如果需要大量对象并希望节省内存,则可能还需要调查使用“轻量级”模式是否适用。



 类似资料:
  • 主要内容:1、静态属性,2、静态函数在 C# 中,我们可以使用 static 关键字声明属于类型本身而不是属于特定对象的静态成员,因此不需要使用对象来访问静态成员。在类、接口和结构体中可以使用 static 关键字修饰变量、函数、构造函数、类、属性、运算符和事件。 注意:索引器和析构函数不能是静态的。 若在定义某个成员时使用 static 关键字,则表示该类仅存在此成员的一个实例,也就是说当我们将一个类的成员声明为静态成员时,无论创

  • 本文向大家介绍浅析PHP的静态成员函数效率更高的原因,包括了浅析PHP的静态成员函数效率更高的原因的使用技巧和注意事项,需要的朋友参考一下 很多php开发人员都知道, 使用类的静态成员函数效率比类的普通成员函数的要高,本文从应用层次分析这个问题 下面是一个范例: 认真看上面的范例,会发现一个有趣的地方,secho1()定义为静态方法后, 在动态类的对像实例中仍可以引用为动态方法,而secho3()

  • 本文向大家介绍C++中静态成员函数与静态成员变量(static ),包括了C++中静态成员函数与静态成员变量(static )的使用技巧和注意事项,需要的朋友参考一下 C++中静态成员函数与静态成员变量(static ) 这篇介绍了静态成员函数与静态成员变量,是我的读书笔记,我希望它够简短但又比较全面,起到复习的作用。如果有一些C++知识记不清楚了,它可以帮你很快回忆起来。 复习C语言的stati

  • 本文向大家介绍Java类的静态成员是什么?,包括了Java类的静态成员是什么?的使用技巧和注意事项,需要的朋友参考一下 在Java中,静态成员是属于该类的成员,您可以在不实例化该类的情况下访问这些成员。 static关键字可以与方法,字段,类(内部/嵌套),块一起使用。 静态方法-您可以使用关键字static创建静态方法。静态方法只能访问静态字段,方法。要访问静态方法,无需实例化该类,只需将类名用

  • 本文向大家介绍什么是C#类的静态成员?,包括了什么是C#类的静态成员?的使用技巧和注意事项,需要的朋友参考一下 我们可以使用static关键字将类成员定义为static。当我们将一个类的成员声明为静态成员时,这意味着无论创建了多少个该类的对象,静态成员只有一个副本。 关键字static表示该类仅存在成员的一个实例。静态变量用于定义常量,因为可以通过调用该类而不创建其实例来检索其值。静态变量可以在成

  • 本文向大家介绍PHP静态成员变量和非静态成员变量详解,包括了PHP静态成员变量和非静态成员变量详解的使用技巧和注意事项,需要的朋友参考一下 数据成员可以分静态变量、非静态变量两种. 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于