代码之家  ›  专栏  ›  技术社区  ›  Ian R. O'Brien Mamedov

将方法转换为静态方法时的内存使用情况

  •  10
  • Ian R. O'Brien Mamedov  · 技术社区  · 14 年前

    我开始使用Resharper,它指出 使之静止。将几百个方法转换成静态方法会在很长一段时间内增加内存占用吗?

    2 回复  |  直到 14 年前
        1
  •  15
  •   Reed Copsey    14 年前

    不-更改为静态方法对内存没有影响。

    但是,如果您只是考虑将方法从非静态切换到静态,这对垃圾收集或总内存占用没有影响。

    如果将类成员更改为静态成员,则只需担心内存占用的变化。在这种情况下,一旦访问类型,静态字段将保持根,并且不会被GC收集。这通常只在必要的时候进行,通过设计,您可以使成员成为静态的,因为您希望它持久存在。

        2
  •  7
  •   Hans Passant    14 年前

    调用方法时需要传递额外的参数。这可能需要额外的机器代码指令,但并不经常如此。CPU寄存器(ECX)通常已经有了正确的值。如果一个实例方法在x86上有多个参数,或者在x64上有多个参数,则有一个区别,即必须在堆栈上传递一个额外的参数,而不是通过CPU寄存器。一个额外的指令。

    最坏的情况是,你看到的是不到一纳秒的时间。这将很难衡量,这是微优化的常见问题。