1、在看点GC方面的东西,发现freeMemory返回虚拟机中的还能够分配给对象的大概值.是不是就是heap上的?2、我用-Xms讲heap的初始大小置为1024M,但freeMemory只返回976M左右,其他的空间呢?用来放啥了?3、permanent generation主要放的是描述类和方法的对象以及类和方法本身等这些,我有点搞不清描述类的对象是啥?是一个Class的实例吗?那类本身又是啥(难道是那些字节码?)?

解决方案 »

  1.   

    1: Runtime#freeMemory 指的是堆内存,也就是你所说的 heap
    2:JRE 需要加载基本的对象,这些空间被这些对象所占用了
    3:permanent generation 这块是 JVM 内存中的持久代,主要存放的是方法区的数据。方法区主要包括:类的元数据,以及方式的元数据。对于类来说,有很多数据啊,比如包名、类名、这个是类还是接口、类的修饰符、字段信息、方法信息等等类的元数据。
      

  2.   

    Runtime#freeMemory 指的是堆内存
      

  3.   

    谢谢火龙果.以下两点是我对sun那份白皮书的一点点理解,是否是对的?
    1、请问当做full gc的时候先在新生代执行新生代回收算法,然后在老生代和持久代执行老生代回收算法2、因为在进行minor gc的时候会有可能把一些对象拷贝到老生代,但是如果此时老生代太满的话就停止执行新生代垃圾回收算法,直接就对整个堆执行老生代垃圾回收算法