学java两年了,到现在还是不明白创建对象前后,计算机内存到底发生了什么变化,我们创建一个对象实例后,计算机会分配相应的内存空间,那么这些内存空间里到底存放的什么东西啊?是生成这个对象的类的代码吗?还有这个对象的堆内存,方法区分别存放的什么东西啊?因为学java好长时间了,所以想对底层了解更深入些,希望各位大虾说明白点,不要给我举例子,最好从计算机角度解释,以解我心中困惑,谢谢了!!!!!!!

解决方案 »

  1.   

    我买过一本书 csapp
    还没看完 看到这就想起来啦
      

  2.   

    栈中存放 局部变量和对象名(这我也有点模糊) 堆中存放new出来的和引用数据类型的直 池中存放String类型字符串
      

  3.   

    对象里放对象的数据(非static的field,自己定义的和从父类继承的),再有一些标记信息(垃圾回收相关、hash相关、线程相关等)。
    对象一般分配在堆中,不过jvm可以进行一些特殊优化,不保证一定在堆中生成对象。