class A
{
private double a[]=new double[7000000];  //这里即使是double[1];
                                               //请打开任务管理器,内存变化是一样的。这是为什么??
}
class B extends A
{
public static void main(String args[])
{
new A();                      //实例化A了,A的所有数据域就应该分配内存空间了
}
}

解决方案 »

  1.   

    你把private double a[]=new double[7000000];放到A的构造方法里试试。
      

  2.   

    Java 虚拟机启动后会一次获取指定数量的内存空间供 Java 程序使用,即便程序启动时尚不需要这么多的内存。
      

  3.   

    内存管理器看的是一个进程占用的内存,你同样的进程怎么看的出他是占用那片内存????这里即使是double[1]占不占用物理内存你也看不出!!!建议你去网上下载一个专门看内存的软件下来!!!这很多!!!!看得出那片内存被占用占用多少???
      

  4.   

    Class A被加载的时候,JVM只分配保存Class A的相关信息的内存空间。
    实例化A的时候,JVM会分配实际对象的内存空间。
    查询程序所占JVM内存的方法我不知道,但是,LZ可以通过Runtime.getRuntime().freeMemory()方法查看当前JVM所剩余的内存空间。
    以及Runtime.getRuntime().totalMemory()方法,查看当前JVM为程序提供的所有内存数。
    以上两个方法的返回值,是根据情况变动的。LZ可以根据其变化,大致判断出,是否为对象分配了内存。
      

  5.   

    感觉这个应该可以
    java零起点技术群欢迎你的光临,群号29621297,论坛www.java07dian.com