java virtual machine stacks
中存放的为 私有栈帧 里面的内容有 局部变量表,操作栈,动态链接,方法出口等信息。
局部变量表存放了编译器可以预知的各种基本数据类型(boolean,byte,char,short,int,float,long,double),
对象引用(reference类型,指向对象起始地址的指针,或者是指向一个代表对象的句柄或者其他与此对象相关的位置)
returnAddress类型(指向一条字节码指令的地址。)
如果线程请求的栈深度大于虚拟机栈的深度,抛出StackOverFlowError异常
如果虚拟机可以动态扩展,当扩展时无法申请到足够的内存是会抛出OutOfMemoryError异常
java heap
所有的对象实例以及数组都要分配到heap
java -Xmx20M (设置堆的大小 Xms为最小值参数, Xmx为最大值参数 两者设置一样可以防止自动扩展)
通过参数-XX:+HeapDumpOnOutOfMemoryError 可以让虚拟机在出现内存溢出时Dump出当前的内存堆转储快照以便事后分析
虚拟机栈设置参数
-Xoss (设置本地方法栈大小,hotspot此参数无效)
-Xss (设置栈容量)
两种异常
1.StackOverflowError
2.OutOfMemoryError
运行时常量池溢出
-XX:PermSize -XX:MaxPermSize (限制方法区)
jvm
最新推荐文章于 2022-08-15 00:01:54 发布