许多人说:“运行时数据区分为pc寄存器、java虚拟机栈、堆、方法区、运行时常量池、本地方法栈共6个部分。”另外,还常常听人说“代码区,数据区,堆内存,栈内存”,给菜鸟解释下,下边这句与上边是怎么对应或包含的?

解决方案 »

  1.   

    “运行时数据区分为pc寄存器、java虚拟机栈、堆、方法区、运行时常量池、本地方法栈共6个部分。”
    严格的说,这个是最标准的,是jvm规范定义的。
      

  2.   

    推荐你看《JAVA优化编程》,有一章讲JAVA的内存管理,讲的比较详细
      

  3.   

    去看 虚拟机 jvm 可以获取到不少
      

  4.   

    上一句属于jvm的范畴,下一句属于编译器、os的范畴,而jvm运行在os之上,所以最终要映射到代码区、数据段、堆、栈上面
      

  5.   

    PC寄存器 优点 是运行速度最快的。缺点 空间非常有限!java虚拟机栈 这个是运行速度仅次于寄存器的存储空间。简称栈内存 主要存储对象的引用!堆 也就是堆内存主要存储的是 用户创建的是的对象 比如new String("abc") 优点 空间较大,缺点 运行速度较慢!方法区 就是代码区 存储用户的运行代码!我知道的,大概就这么多吧
      

  6.   

    打算看看JAVA优化编程...谢谢上面的朋友
      

  7.   

    说真的你说的这个我只是在开始学习Java的时候听过,但是到现在我还是弄的不是很懂!