![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 69
ABCdxy~
这个作者很懒,什么都没留下…
展开
-
垃圾收集器
虽然我们对各个收集器进行比较,但并非要挑选出一个最好的收集器。因为直到现在为止还没有最好的垃圾收集器出现,更加没有万能的垃圾收集器,。试想一下:如果有一种四海之内、任何场景下都适用的完美收集器存在,那么我们的 HotSpot 虚拟机就不会实现那么多不同的垃圾收集器了。原创 2022-10-22 20:15:32 · 71 阅读 · 0 评论 -
怎么确定一个对象是不是垃圾
在堆里面存放着Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事就是要确定这些对象之中哪些还着,哪些已经了。原创 2022-10-16 21:31:48 · 359 阅读 · 0 评论 -
JMM内存模型
lock(锁定):作用于主内存的变量,它把一个变量标识为一条线程独占的状态。unlock(解锁):作用于主内存的变量,它把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定。read(读取):作用于主内存的变量,它把一个变量的值从主内存传输到线程的工作内存中,以便随后的load动作使用。load(载入):作用于工作内存的变量,它把read操作从主内存中得到的变量值放入工作内存的变量副本中。原创 2022-10-16 20:53:20 · 106 阅读 · 0 评论 -
GC垃圾回收
内存效率:复制算法>标记清除算法>标记压缩算法(时间复杂度)内存整齐度:复制算法=标记压缩算法>标记清除算法内存利用率:标记压缩算法=标记清除算法>复制算法思考一个问题:难道没有最优算法吗?答案:没有,没有最好的算法,只有最合适的算法——》GC:分代收集算法存活率低复制算法区域大:存活率高标记清除(内存碎片不是太多)+标记压缩混合实现。原创 2022-10-16 20:35:32 · 296 阅读 · 0 评论 -
使用JPofiler工具分析OOM原因
在一个项目中,突然出现了OOM故障,那么该如何排除~能够看到代码第几行出错:内存快照分析工具,MAT,JprofilerDubug,一行行代码分析!MAT,Jprofiler作用:分析Dump内存文件,快速定位内存泄露获得堆中的数据获得大的对象...原创 2022-10-15 22:15:13 · 919 阅读 · 0 评论 -
堆
此时字符串常量吃保留在堆中,运行时常量池保留在方法区中,只是实现不一样了,JVM内存变成了直接内存。只不过永久代是这个接口最初的实现类,后来这个接口一直进行变更,直到最后彻底废弃这个实现类,由新实现类—元空间进行替代。在jdk1.7之前,运行时常量池+字符串常量池是存放在方法区中,HotSpot VM对方法区的实现称之为永久代。方法区是一种规范,不同的虚拟机厂商可以基于规范做出不同的实现,永久代和元空间就是出于不同jdk版本的实现。Heap,一个JVM只有一个堆内存,堆内存的大小是可以调节的。原创 2022-10-15 20:07:19 · 423 阅读 · 0 评论 -
栈(后进先出)
栈内存,主管程序的运行,生命周期和线程同步;线程结束,栈内存也就释放了,对于栈来说,原创 2022-10-15 19:42:59 · 270 阅读 · 0 评论 -
native、方法区
native、方法区原创 2022-10-13 23:08:52 · 330 阅读 · 0 评论 -
类加载器及双亲委派机制
使用java语言编写,父类加载器为扩展类加载器,该类加载是程序中默认的类加载器,一般来说,java应用的类都是由它来完成加载。这个类加载使用C/C++语言实现的,嵌套在JVM内部,它用来加载Java的核心库((JAVA_HOME/jre/lib/rt.jar、resources.jar或sun.boot.class.path路径下的内容),用于提供JVM自身需要的类,出于安全考虑,Boostrap启动类加载器只加载包名为java、javax、sun等开头的类。原创 2022-10-12 21:56:49 · 520 阅读 · 0 评论 -
JVM的体系结构
JVM的体系结构原创 2022-10-12 21:21:30 · 60 阅读 · 0 评论