JVM

2024-04-06  本文已影响0人  书虫大王X
Java 虚拟机的架构包括三个主要部分:
jvm结构简图 jvm结构简图
类加载器
链接阶段 初始化阶段 image.png 双亲委派机制 双亲委派机制2
类加载器的分类:
image.png image.png 12 11 10 9 8 6 5 4 3 2
程序计数器:
虚拟机栈:
栈常见异常 栈帧 栈桢内部结构 栈桢内部结构2 局部变量 局部变量表 操作数栈
操作数栈2
操作数栈3 动态链接 动态链接2 动态链接3 动态链接4

本地变量、实例变量以及类变量之间的区别?

13、栈与线程的关系:
12、说一下栈溢出,说一下什么情况下会遇到这样的错误,为什么会遇到这样的错误:

1、堆栈尺寸设置过小:确保系统的栈空间大小和线程数等配置足够满足程序的需求。
2、递归调用层级过深: 当程序中存在递归调用,并且递归调用的次数过多时,每次递归调用都会在栈中压入一个新的方法调用帧,如果递归调用层级过深,超过了栈的容量,就会导致栈溢出。
3、方法调用层级过深: 即使没有显式的递归调用,但是如果程序中存在大量的方法调用,并且方法调用的层级过深,也可能导致栈溢出。
4、局部变量过多: 在方法调用过程中,每个方法调用都会在栈帧中分配一定的空间来存储方法的局部变量和临时数据。如果方法中声明了过多的局部变量,会增加每个方法调用所需的栈空间,从而可能导致栈溢出。
5、线程过多: 每个线程都有自己的栈空间,如果程序中创建了大量的线程,而每个线程的栈空间又较大,就可能耗尽系统的栈空间,导致栈溢出。

6、垃圾回收:

上一篇下一篇

猜你喜欢

热点阅读