2010-07-11 66 views
0

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

+0

你的第一个问题还不清楚,你似乎已经知道第二个问题的答案。 – Dolph 2010-07-11 07:17:40

+0

所有正在运行的程序都在硬盘上。只为内存中的所有对象创建一个静态varibale副本.. – Laz 2010-07-11 07:21:36

+1

@Ram Bhat:不,运行的程序不在磁盘上。 – Dolph 2010-07-11 07:33:09

回答

4
  • Java不是“未存储在硬盘中”。 Java解释器从永久存储中加载。正如构成Java程序的类文件一样。在运行时,所有内容都必须放在RAM中(以及无视分页)以供处理器使用 - 这就是计算机的工作方式!
  • 如果一个变量是静态的,在内存中将会有一个或零个副本。如果它是一个实例变量,则每个类的实例都有一个副本。所以是的,如果一个类实例化了多次,一个静态变量会占用更少的内存。
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其所有属性,会有只有一个该属性的对于全部Bicycle的实例。

1

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

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