![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
good well
虚心求教,共同进步
展开
-
JVM(六)---jvm压缩指针
一 什么是oop OOP = “ordinary object pointer” 普通对象指针。 启用CompressOops后,会压缩的对象: 1. 每个Class的属性指针(静态成员变量) 2. 每个对象的属性指针 3. 普通对象数组的每个元素指针 当然,压缩也不是万能的,针对一些特殊类型的指针,JVM是不会优化的。 比如指向 PermGen的Class 对象指针,本地变量,堆栈元素,入参,返回值,NULL指针不会被压缩二 为什么使用压缩指针 ...原创 2020-05-26 17:07:01 · 512 阅读 · 2 评论 -
JVM(五)---OutOfMemoryError实例
一 前言OutOfMemoryError异常是在编程过程中因为程序的处理问题或者jvm参数配置的问题而导致的错误。在虚拟机的这几个运行时区域都有发生OutOfMemoryError的可能:java堆,虚拟机栈,本地方法栈 ,方法区,运行时常量池,直接内存。下面针对这些例举几个代码例子来说明。二 java堆溢出 Java堆用于存储对象实例,只要不断的创建对象,并且保证GC Roots...原创 2019-10-24 17:52:13 · 452 阅读 · 0 评论 -
JVM(一)---原理与运行机制
一 原理及运行机制我们都知道java语言的最大优点在于他的跨平台概念,为什么能跨平台?因为有了这个jvm,中文为java 虚拟机.正因为它的存在所以有了一次编译,到处运行一说..Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:运行期环境代表着Java平台,开发人员编...原创 2019-04-26 13:23:26 · 193 阅读 · 0 评论 -
JVM(三 )---基本垃圾回收算法
按照基本回收策略分引用计数(Reference Counting):比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。标记-清除(Mark-Sweep):此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。此算法...原创 2019-04-26 14:22:43 · 114 阅读 · 0 评论 -
JVM(四)---分代垃圾回收
一 前言 本篇重点整理现在最普遍使用的垃圾回收算法,分代垃圾回收算法。基于对对象生命周期分析后得出的垃圾回收算法。把对象分为年青代、年老代、持久代,对不同生命周期的对象使用不同的算法(上述方式中的一个)进行回收。现在的垃圾回收器(从J2SE1.2开始)都是使用此算法的。二 概念JVM堆内存分为2块:Permanent Space和 Heap Space。Permanent...原创 2019-04-26 15:56:18 · 369 阅读 · 0 评论 -
JVM(二)---HotSpot 虚拟机对象探秘
一 前言 通过上一篇JVM(一)我们大致知道了JVM虚拟机的内存的概况,接下来来了解下HotSpot 虚拟机在 Java 堆中对象分配、布局和访问的全过程。二 对象的创建1.类加载检查:虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,(因为常量池中存放的是编译期生成的字面量跟符号引用)并且检查这个符号引用代表的类是否已...原创 2019-04-27 14:21:33 · 163 阅读 · 0 评论 -
JVM常见面试题
一什么是内存溢出,内存泄漏 :当一个对象已经不需要再使用本该被回收时,另外一个正在使用的对象持有它的引用从而导致它不能被回收,这导致本该被回收的对象不能被回收而停留在堆内存中,这时候产生内存泄漏,让我们来看看下面这个例子,看看为什么内存泄漏会发生。在如下例子中,对象A引用了对象B。A的生命周期(t1—t4)要比B的生命周期(t2—t3)长很多。当B不再用于应用中时,A仍然持有对...原创 2019-05-03 16:47:15 · 1788 阅读 · 0 评论