如题。

解决方案 »

  1.   

    逻辑上分为 java堆、java栈、方法区、程序计数器、本地方法栈五个部分
      

  2.   

    一、 java内存结构  1. Heap(堆):实例分配的地方,通过-Xms与-Xmx来设置  2. MethodArea(方法区域):类的信息及静态变量。 对应是Permanet Generation, 通过-XX:PermSize来设置  3. JavaStack(java的栈):虚拟机只会直接对Javastack执行两种操作:以帧为单位的压栈或出栈。通过-Xss来设置, 若不够会抛出StackOverflowError  4. ProgramCounter(程序计数器):每一个线程都有它自己的PC寄存器,也是该线程启动时创建的。PC寄存器的内容总是指向下一条将被执行指令的饿地址,这里的地址可以是一个本地指针,也可以是在方法区中相对应于该方法起始指令的偏移量。  5. Nativemethodstack(本地方法栈):保存native方法进入区域的地址
      

  3.   

    到这个页面:http://download.oracle.com/javase/cmn/spec_index.html下载Java Virtual Machine Specification翻到第二章,就明白了这可是最权威的资料
      

  4.   

    Method Area、pc Register、Native Method Stacks、Runtime Constant Pool这些都是属于栈的吗?那英文文档看得很吃力,哎。。
      

  5.   

    被thinking in java搞乱了。
      

  6.   

    Java Stack才是栈,其他都不是
      

  7.   

    1. Heap(堆):新生代,旧生代,还有持久代2. MethodArea(方法区域):类的信息及静态变量。 3. JavaStack(java的栈):一般局部变量,和内联的时候的对象会放在这里