![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 79
Java虚拟机相关
silentic
准码农
展开
-
Java类的加载
类的生命周期加载通过全类名获取定义此类的二进制字节流将字节流所代表的静态存储结构转换为方法区的运行时数据结构在内存中生成一个代表该类的 Class 对象,作为方法区这些数据的访问入口其他步骤暂略类加载器BootstrapClassLoader(启动类加载器) :最顶层的加载类,由 C++实现,负责加载 %JAVA_HOME%/lib 目录下的 jar 包和类或者被 -Xbootclasspath参数指定的路径中的所有类。ExtensionClassLoader(扩展类加载器) :主要原创 2021-12-29 23:31:48 · 320 阅读 · 0 评论 -
垃圾回收机制
堆内存的分配与回收由于目前收集器都采用分代算法,因此Java堆可以分为新生代和老年代。分代回收原理:对象首先被分配在新生代,经历过垃圾回收后若仍存活,则移到老年代。但这样老年代很快会被填满,导致触发Major GC,性能受影响。于是将新生代分为Eden区和Survivor区,Eden满时触发Minor GC,将存活的对线移至Survivor区。这样直到对象经历过一定次数的回收仍存活时,才将其移到老年代,这样就减少了Major GC(可视为Full GC)。那为什么要设置俩Survivor区?答案是原创 2021-12-29 22:52:35 · 344 阅读 · 0 评论 -
Java内存区域
运行时数据区域Java虚拟机在运行程序时将其管理的内存分为若干数据区域:程序计数器记录当前线程执行的字节码指令的地址。Java虚拟机栈调用方法时会创建一个栈帧存储局部变量表等信息。可以通过-Xss这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小:该区域可能抛出以下异常:当线程请求的栈深度超过最大值,会抛出 StackOverflowError 异常;栈进行动态扩展时如果无法申请到足够内存,会抛出 OutOfMemoryError 异常。本地方法栈和虚拟机栈类似,但只为原创 2021-12-28 22:42:44 · 483 阅读 · 0 评论