![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
浩水浮生
好看的皮囊千篇一律,有趣的灵魂万里挑一。
展开
-
面试必问之JVM
一、jvm运行时的数据区域 jvm运行时数据区域 在jvm运行时的数据区域,方法区和堆是线程共享的区域,而java 栈,本地方法栈,程序计数器 这三部分是每个线程私有的空间。 1.程序计数器 程序计数器是很小的一块内存区域,可以看成是所执行的字节码文件的行号指示器,字节码解释器就是通过程序计数器的值选取下一条需要执行的指令。处理器切换线程时不会记录上个线程执行到了那个位置,为了每个线程能够切换到上次执行的位置,因此程序计数器是每个线程私有的。在执行Native方法时,由于Native方式不.原创 2020-10-18 17:15:48 · 133 阅读 · 1 评论 -
JVM 之java内存模型
一、硬件的效率与一致性 在计算机中处理器是用来处理任务的,而内存是用来存储数据的,计算器处理任务仅仅靠处理器是无法完成任务的,通常需要读取内存数据,处理器处理完后,再把处理结果保存到内存中。由于计算机的处理速度和存储速度有几个数量级的差距,所以计算机不得不加入一层速度更加接近处理器处理速度的高速缓存作为内存与处理器之间的缓冲。计算机把数据从内存复制到缓存中,使用处理器处理完毕后,再把处理后的数据同步到内存中。 但是在多个处理器中就会存在多个缓存,但是多个处理器又公用一个内存。...原创 2020-10-12 23:03:49 · 79 阅读 · 0 评论 -
GC垃圾回收
堆中的对象回收: 计数法:在每个对象上有一个计数器,每增加一个引用,计数器就加1,每减少一个引用计数器就减少1,当计数器为0时,这个对象可以被回收,但是存在两个对象互相引用的情况,而该对象又不能被回收掉, 所以又有了根GCroot搜索法,沿着每个对象的引用一直向上寻找,如果找到GCroot就不被删除,如果没有找到,该对象就加入了被回收的行列,可以做GCroot的有(1.当前正在执行的方法里的局...原创 2018-03-23 16:40:22 · 557 阅读 · 0 评论 -
双亲委派模型
双亲委派模型的工作过程是,如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需要的类时)时,子加载器才会尝试自己去加载。...原创 2018-07-09 11:36:42 · 69 阅读 · 0 评论 -
JVM 类加载机制
一、类加载机制的描述 什么是虚拟机的类加载机制呢? 作为一个java程序员,应该知道我们写的java程序是要编译成class文件的,也就是说我们写的需要jvm执行的信息都存放在class文件中,那么jvm怎么获取class文件中的信息呢?虚拟机把class中的信息加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是JVM的类加载机制。 二、类加载的时机 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括加载、验证、准备、解析、初始化、使用原创 2020-10-11 23:29:04 · 77 阅读 · 0 评论