java虚拟机内存一般分为以下5部分:
程序计数器:可以看做当前线程所执行的字节码的行号指示器。java虚拟机在执行多线程时,同一时刻只能执行一个线程的一条指令,固程序计数器是记录对应线程所执行到的位置,也就是说每个线程要对应一个程序计数器。如果线程执行的是java方法,计数器显示的是行号,如果执行的是native的时候,则显示undefinded,该区域还是唯一一个java虚拟机中没规定任何内存溢出的区域。
java虚拟机栈:也就是经常说的栈内存,存储局部变量,其中包括(8大基本数据类型,对象的引用变量等),在编译时完成分配。
本地方法栈:与java虚拟机栈类似,不过处理的是native方法。
java堆:存放对象的实例,垃圾回收机制主要负责的区域,当内存不足时,为抛出OutOfMemberError的异常,属于线程共享。
方法区:主要存放类信息和常量,静态变量
转载于:https://blog.51cto.com/7640143/1596466