![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
熱愛.java
不忘初心,方得始终
展开
-
类加载器有哪些?
3 系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类。一般来说,Java 应用的类都是由它来完成加载的。2 扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。1 启动类加载器(Bootstrap ClassLoader)用来加载java核心类库,无法被java程序直接引用。4 用户自定义类加载器,通过继承 java.lang.ClassLoader类的方式实现。原创 2022-11-22 16:18:02 · 2822 阅读 · 0 评论 -
堆和栈的区别
3、异常错误不同 : 如果栈内存或者堆内存不足都会抛出异常。栈是运行时单位,代表着逻辑,内含基本数据类型和堆中对象引用,所在区域连续,没有碎片;堆 是存储单位,代表着数据,可被多个栈共享(包括成员中基本数据类型、引用和引用对象),所在 区域不连续,会有碎片。1、功能不同 : 栈内存用来存储局部变量和方法调用,而堆内存用来存储Java中的对象。无论是成员变量,局部变 量,还是类变量,它们指向的对象都存储在堆内存中。2、共享性不同 : 栈内存是线程私有的。4、空间大小 : 栈的空间大小远远小于堆的。原创 2022-11-22 16:14:42 · 206 阅读 · 0 评论 -
JVM的内存模型
1、方法区 线程共享的,用于存放被虚拟机加载的类的元数据信息,如常量、静态变量和即时编译器编译后的 代码。栈的大小决 定了方法调用的可达深度(递归多少层次,或嵌套调用多少层其他方法,-Xss参数可以设置虚拟机 栈大小),栈的大小可以是固定也可以动态扩展。刚创建的对象在新生代的 Eden区中,经过GC后进入新生代的S0区中,再经过GC进入新生代的S1区中,15次GC后仍存在就 进入老年代。一个线程对应一个虚拟机栈,一个虚拟机栈对应多个栈帧,每个栈帧的的入栈和出栈表示一个方法 的调用。原创 2022-11-22 16:11:43 · 252 阅读 · 0 评论