jvm
文章平均质量分 64
迈克丝
加油学技术,早日赚高薪
展开
-
垃圾收集器与内存分配策略 - 1 GC
垃圾收集(Garbage Collection,简称GC),主要有以下三点 那些内存需要回收 什么时候回收 如何回收 像java中已经对于垃圾收集与内存分配实现了自动化,那么我们为什么还要去了解呢? 是当我们需要达到更高并发量时,当GC会成为瓶颈的时候,我们就需要去监控和调节GC 而java内存运行时,其中程序计数器、虚拟机栈、本地方法栈都随线程变化——编译器可知 而堆和方法区也不同,会根据接口的实现类多少或者一个方法中不同条件分支所需要的内存也可能不一样——运行期可知 GC关心的也是运行期间这些动态产原创 2021-08-12 15:44:04 · 201 阅读 · 0 评论 -
对象内存布局与对象访问定位
对象在内存中的存储布局可以划分为三个部分:对象头、实例数据、对齐填充 1. 对象头 对象头包括两类信息: 用于存储对象自身得运行时数据(如:哈希码、GC分代年龄、锁标志等) 另一部分是类型指针,即对象指向它的类型元数据的指针,java虚拟机通过这个指针来确定该对象是哪个类的实例 2. 实例数据 实例数据部分是对象真正存储的有效信息,即是我们再程序代码中所定义的内容,无论是从父类中继承下来的,还是在子类中定义的字段都记录着;这部分的存储顺序会受到虚拟机分配策略参数(-XX:FieldsAllocation原创 2021-07-05 17:28:25 · 110 阅读 · 0 评论 -
虚拟机中对象创建
对象的创建 当我们代码中通过new关键字去创建一个对象时,虚拟机会怎么做呢? 1.首先去检查这个命令的参数是否能在常量池中定位到一个类型的符号引用 2.在类加载检查通过后,接下载虚拟机将为新生对象分配内存 3.内存分配完成后,虚拟机必须将分配到的内存空间(不包括对象头)都初始化为零值 4.java虚拟机还要对对象进行必要的设置 注意:对象创建在虚拟机中是非常频繁的行为,在并发情况下并不是线程安全的 解决:(1)对分配内存空间的动作进行同步处理(2)把内存分配的动作按照线程划分在不同的空间之中进行 当上述的四原创 2021-06-30 16:59:21 · 106 阅读 · 0 评论 -
GC垃圾回收机制基本过程理解
GCGC全拼是Garbage Collectio,是指计算机技术中的垃圾回收系统,Java语言就是自带垃圾回收系统的一门语言,那么在程序运行中,究竟是怎么回收的呢?何为垃圾?要了解java中的GC垃圾回收系统,当然要先理解在java中什么样的数据或对象会被GC判定为"垃圾".可达性:首先需要了解一个概念,叫做"可达性"class ClassA{} public class TestGC{ ...原创 2020-07-31 00:00:00 · 168 阅读 · 0 评论 -
java内存区域
1. 程序计数器 程序计数器(Program Count Register)是一块较小的内存空间,可以将其看作是当前线程所执行的字节码文件的行号指示器;在java虚拟机的设置里,字节码解释器工作时就是通过改变该计数器的值来选取下一条需要执行的字节码指令;所以它也是 程序流程控制的指示器,分支/循环/跳转/异常等等基础功能都需要依赖于这个计数器来完成 由于java虚拟机中的多线程是通过轮流切换线程,分配处理器执行时间来实现的,所以在任何一个时刻,一个处理器都只会执行一个线程中的指令;所以每个线程都需要有一个.原创 2021-06-10 18:28:29 · 91 阅读 · 0 评论