首页
博客
源码
资源
博客
源码
写文章
发布博客
发布资源
登录
X
jvm
相关资讯
热门
最新
代码人生
01-01 08:00
代码人生
JVM-垃圾收集器算法(5)
JVM-垃圾收集器算法(5),标记清除算法标记阶段引用计数算法(JAVA并未采用)对于一个对象A,只要有任何一个对象引用A,则A的引用计数器加1,当引用失效时,计数器减一,当计数器为0时,表示该对象可回收。图一BACDE图一解对象A对象B对象C对象D对象E000000110021100GC回收过程当GC回收对象D时,发现该对象没有被引用所以它引用计数器为0可以被回收,随着对象D被回收,对象B的引用
73
代码人生
01-01 08:00
代码人生
jvm——程序计数器
jvm——程序计数器,程序计数器定义程序计数器全称为ProgramCounterRegister(寄存器)作用记住下一条jvm指令的执行地址,看下面这个例子:这是一段控制台输出的java代码,编译后各个阶段的情况,主要看二进制字节码部分。当然这里的二进制字节码并不是大家所熟知的计算机的0和1,它并不能直接给到cpu执行,它需要通过解释器解释成一条机器码,机器码就可以交给cpu执行它了。程序计数器的
73
代码人生
01-01 08:00
代码人生
JVM垃圾回收算法的基础设计理论
JVM垃圾回收算法的基础设计理论,知识不是孤立的,且不应该被孤立,你要试图去找到它们之间的联系,以此去更好的运用它,这是我鼓励我自己的话,希望与你们共勉。今天我们来说说垃圾回收的基础设计理论,这是了解垃圾回收算法,了解GC机制的前提,也是每个进行JVM调优的程序员的必修课,你要它帮你干什么,你得先了解它需要什么,读完本篇文章,你能了解到垃圾回收的基础算法的设计原理。分代搜集理论我们绝大部分垃圾收集
189
代码人生
01-01 08:00
代码人生
JVM类加载机制
JVM类加载机制,类加载过程加载:从磁盘或者网络读取字节码到内存中,如jar、zip验证:验证字节码是否符合class文件规范,比如魔术验证、版本号验证准备:读取字节码中常量池信息、读取static变量为其分配内存,初始化变量值(如int初始化为0)解析:将符号引用解析为直接引用,解析时也可能出现引用类未加载触发类加载,所以类加载是一个递归过程初始化:调用类的client方法,在编译时,会将类中s
69
代码人生
01-01 08:00
代码人生
JVM-Java 对象模型
JVM-Java 对象模型,Java对象保存在堆内存中。在内存中,一个Java对象包含三部分:对象头、实例数据和对齐填充。其中对象头是一个很关键的部分,因为对象头中包含锁状态标志、线程持有的锁等标志。对象头对象头信息是与对象自身定义的数据无关的额外存储成本,考虑到虚拟机的空间效率,MarkWord被设计成一个非固定的数据结构以便在极小的空间内存储尽量多的信息,它会根据对象的状态复用自己的存储空间。
75
代码人生
01-01 08:00
代码人生
JVM终于开始调用Java主类的main()方法啦
JVM终于开始调用Java主类的main()方法啦,在前一篇第3篇-CallStub新栈帧的创建中我们介绍了generate_call_stub()函数的部分实现,完成了向CallStub栈帧中压入参数的操作,此时的状态如下图所示。继续看generate_call_stub()函数的实现,接来下会加载线程寄存器,代码如下:__movptr(r15_thread,thread);__reinit_h
82
代码人生
01-01 08:00
代码人生
JVM-运行时数据区、类加载、GC详解
JVM-运行时数据区、类加载、GC详解,前言:Java虚拟机是Java平台的基石。它是技术的组成部分,负责其硬件和操作系统的独立性、编译代码的小尺寸以及保护用户免受恶意程序侵害的能力。该篇文章详细讲述JVM各个模块。学习概览图:运行时数据区Java虚拟机定义了在程序执行期间使用的各种运行时数据区域。其中一些数据区域是在Java虚拟机启动时创建的,只有在Java虚拟机退出时才会被销毁。其他数据区域是
98
代码人生
01-01 08:00
代码人生
JVM中常量池和String的常量池
JVM中常量池和String的常量池,前言在JVM模型中专门有常量池的讲解,为什么需要常量池呢?就像我们平时生活中总是需要一些标签的,常量的坐拥就是固定不变的变量。方便我们以此为标杆问题描述上面也说了newString是不断的开辟空间来存储内容的。但是String使用特别广泛这样操作的话很容易造成OOMpublicstaticvoidmain(String[]args)throwsInterrup
67
后端
01-01 08:00
后端
JVM的编译技术介绍
JVM的编译技术介绍,今天来聊聊java的字节码技术,java虚拟机的高效执行离不开字节码,字节码贴近机器指令但不是纯粹的字节码指令,读完本篇文章你会了解到字节码指令并能阅读一个简单的字节码指令程序,并洞悉字节码的作用。Java的编译我们的java源代码是通过我们的这个javac编译生成字节码,java虚拟机规范中把这一行为叫生成机器码的解释列表,然后,我们可以用javap进行查看生成的字节码,j
93
后端
01-01 08:00
后端
jvm-对象堆内存分代、对象堆内存垃圾回收器
jvm-对象堆内存分代、对象堆内存垃圾回收器,内存分为新生代和老年代cms新生代,老年代,永久代,且是连续内存空间。jdk8已经没了永久代,而是元空间。g1内存也分代,但是g1垃圾回收器本身是不分新生代和老年代的,即既回收新生代又回收老年代,因为g1是分区,粒度更细,即每个代包含了多个分区,而且每个代的多个分区不是连续内存空间。架构图官方架构图线程栈:局部变量、方法入参(也是局部变量),生命周期和
115
«
1
2
3
4
5
6
7
8
9
10
»