Java-RAM&静态变量的好处

时间:2010-07-11 07:11:41

标签: java

1)为什么java存储在RAM中而不存储在硬盘中。 2)静态变量比正常变量有什么好处。普通变量是否占用更多的内存空间,因为类的对象拥有自己的副本。

3 个答案:

答案 0 :(得分:4)

  • Java不“未存储在硬盘中”。 Java解释器从永久存储加载。与构成Java程序的类文件一样。在运行时,一切都必须在RAM中(好吧,无视分页)由处理器使用 - 这就是计算机的工作方式!
  • 如果变量是静态的,则内存中将有一个或零个副本。如果它是一个实例变量,那么每个类的实例将有一个副本。所以,如果类被多次实例化,静态变量将总共使用更少的内存。

答案 1 :(得分:2)

  

为什么java存储在RAM中而不是   存储在硬盘中

如果您正在讨论变量,则将变量存储在RAM中可实现快速读/写访问,比磁盘快几个数量级。 Java也可以访问磁盘。

  

静态变量的好处是什么?   超过正常变量。

静态变量不依赖于类的特定实例,因此您无需创建对象即可访问,但该静态变量将在每个引用它的代码之间共享。

  

正常变量是否占用更多   自类对象以来的内存空间   拥有它自己的副本。

每次实例化一个对象时,它将占用内存空间。有时它正是你所需要的。

示例:

public class Bicycle{

    private int cadence;
    private int gear;
    private int speed;

    // add an instance variable for the object ID
    private int id;

    // add a class variable for the number of Bicycle objects instantiated
    private static int numberOfBicycles = 0;
    ......
}

每次执行new Bicycle()时,您将创建一个新对象(因此使用更多内存)及其除numberOfBicycles之外的所有属性,将会有 [{1}}的所有个实例的属性只有一个

答案 2 :(得分:1)

无论编程语言如何,所有正在运行的程序都存储在内存中。我假设你的意思是为什么使用.class文件而不是.exes。这是为了便携性,运行时基本上将.class文件在运行时转换为.exe,因此可以在任何平台上运行相同的二进制文件,而不必为每个平台提供不同的文件。

是的,实例变量使用的内存多于类变量,因为每个实例都有自己的副本。静态变量使所有实例共享同一个副本。如果你考虑一个人,每个人都有自己的名字(实例变量),而人们拥有的眼睛#对每个人都是不变的,除非出生缺陷和事故(类别变量)。类和实例变量的用途非常不同。