JVM
L2992786
这个作者很懒,什么都没留下…
展开
-
Java对象的内存布局
Java对象的内存布局一个Java对象在内存中包括对象头(Header)、实例数据(Instance Data)和补齐填充(Padding)三个部分:对象头:Mark Word:用于存储对象自身的运行时数据,如哈希吗 (HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。其长度在32位系统占4字节,在64位系统中占8字节;Class Pointer:对象指向它的类型元数据的指针,通过该指针确定该对象是哪个类的实例。在32位系统占4字节,在64位系统中占原创 2020-08-28 16:31:53 · 191 阅读 · 0 评论 -
JVM总体结构和运行时数据区
JVM 知识点总结jvm的总体结构图JVM包含两个子系统和两个组件,两个子系统为类装载、执行引擎;两个组件为运行时数据区、本地接口。类装载子系统:根据给定的全限定名类名(如:java.lang.Object)来装载class文件到运行时数据区中的方法区。执行引擎:执行classes中的指令。本地接口:与native libraries交互,是其它编程语言交互的接口。运行时数据区域:这就是我们常说的JVM的内存。作用 :首先通过编译器把 Java 代码转换成字节码,类装载器再把字节码加载到原创 2020-08-28 15:40:13 · 158 阅读 · 0 评论 -
JVM虚拟机栈中的局部变量表
JVM虚拟机栈中的局部变量表局部变量存放了编译期可知的各种Java虚拟机基本数据类型(boolean、byte、char、short、 int、float、long、double)、对象引用(reference类型 ,它并不同于对象本身,可能是一个指向对象起始地址的引用指针,也可能是指向一个代表对象的句柄或者其他与此对相象关的位置) returnAddress类型(指向了一条字节码指令的地址 )。这些数据类型在局部变量表中的存储空间以局部变量槽(Slot)来表示,其中64位长度的long和double的原创 2020-08-25 17:54:22 · 528 阅读 · 0 评论 -
强软弱虚四大引用详解及作用
强软弱虚四大引用详解及作用整体架构强引用强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OOM,也不会靠随意回收具有强引用的对象来解决内存不足的问题。软引用如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。弱引用一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它原创 2020-08-07 15:30:23 · 1187 阅读 · 1 评论 -
OOM 常见原因及解决方案
OOM 常见原因及解决方案当 JVM 内存严重不足时,就会抛出 java.lang.OutOfMemoryError :XXXX错误1. Java heap space当堆内存(Heap Space)没有足够空间存放新创建的对象时,就会抛出 java.lang.OutOfMemoryError:Javaheap space 错误首先我们要知道java对象在堆内存(Heap Space)的内存分配原因分析:1、请求创建一个超大对象,通常是一个大数组。2、超出预期的访问量/数据量,通常是上游系原创 2020-07-30 23:09:17 · 538 阅读 · 0 评论 -
java对象在堆内存(Heap Space)的内存分配
java对象在堆内存(Heap Space)的内存分配Eden区和Survivor区是新生代、Tentured区是老年代对象优先在 Eden 区分配多数情况,对象都在新生代 Eden 区分配。当 Eden 区分配没有足够的空间进行分配时,虚拟机将会发起一次 Minor GC。大对象直接进入老年代所谓大对象是指需要大量连续内存空间的对象(如大数组),频繁出现大对象是致命的,会导致在内存还有不少空间的情况下提前触发 GC 以获取足够的连续空间来安置新对象。原因:在新生代使用的是标记-清除算法来原创 2020-07-30 22:01:50 · 463 阅读 · 0 评论