
jvm
文章平均质量分 67
三十年风雨浇灌的花朵
这个作者很懒,什么都没留下…
展开
-
Java对象的创建
Java对象实在堆中创建,主要分为以下五步:一. 类加载检查常量池中是否能定位到类的符号引用,并检查当前类是否被加载解析和初始化过;如果没有则必须执行类加载。二.分配内存虚拟机为对象分配内存,分配内存的方式主要有两种:1.指针碰撞将指针向空闲内存方向移动对象大小的距离。这种方式需要Java堆中内存是绝对规整的。2.空闲列表如果堆中的内存并不规整,如已使用的堆内存与空闲的堆内存相互交织在一起,则不能使用指针碰撞进行内存分配;这个时候虚拟机需要维护一个列表记录堆中的空闲内存的大小,在内存分配的时原创 2022-04-30 22:28:33 · 157 阅读 · 0 评论 -
Java运行时数据区域
Java运行时数据区域是Java执行时所管理的内存区域,这些区域都有各自的用途及创建和销毁的时间;有些区域是随着虚拟机的启动而一直存在,有些区域是随着用户线程启动而创建,用户线程结束而销毁。一. 程序计数器线程私有执行Java方法时存储的是正在执行的虚拟机字节码指令执行本地方法(Native)时存储的空(Undefined)没有规定OutOfMemoryError注意:执行Native方法是Java通过jni调用本地方法来实现,Native是非Java方法,所以程序计数器无法统计。二.原创 2022-04-30 21:31:57 · 167 阅读 · 0 评论 -
JVM 运行时数据区域
一.运行时数据区域Java虚拟机在执行就Java程序的时候会把它所管理的内存分为多个区域,有些区域随着Java虚拟机进程启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立销毁。根据《Java虚拟机规范》,Java虚拟机管理的运行时区域如下图:二.程序计数器线程私有内存是当前线程所执行的字节码的行号指示器执行Java方法,计数器记录的是正在执行虚拟机字节码指令地址执行本地方法,计数器的值则为空(Undefined)唯一一个没有规定任何OOM的区域说明:对于Java方法程序计数器原创 2022-03-25 21:54:53 · 826 阅读 · 0 评论 -
JVM类加载机制
一个类从被加载到JVM内存中开始到卸载为止,他的整个生命周期将会经历加载、验证、准备、解析、初始化、使用和卸载七个阶段。其中加载、验证、准备、初始化和卸载的顺序是固定的。1.加载通过类的全限定名获取来获取定义此类的二进制流;将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构;在内存中生成一个Class对象,作为方法区这个类的数据访问入口。2.验证这一阶段主要是确保class文件中是否包含有危害jvm安全的指令...原创 2021-07-27 14:41:48 · 62 阅读 · 0 评论