
轻松get JVM
轻松get JVM
可乐可乐可
远方,需要不断追寻
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
轻松get JVM虚拟机
Java最神奇的地方之一莫过于他的虚拟机了 Java Virtual Machine ,JVM Java通过JVM执行他的代码,JVM也提供了不同操作系统的版本 只要你提供了JVM支持的文件(我们称之为字节码文件),Java虚拟机就能保证运行结果是一致的。更甚者,字节码文件不仅仅来源于Java代码,只要符合字节码的文件格式规定,JVM就能跑给你看! “Write Once!Run Everywhere!” Java的虚拟机拥有一套“全自动”的垃圾回收机制,这使得Java代码不容易发生内存泄漏,事实上,.原创 2020-07-10 10:53:34 · 302 阅读 · 0 评论 -
虚拟机如何加载类
1024冲冲冲 虚拟机如何加载类 规范化的字节码要加载到虚拟机之中,需要经过特定的步骤。 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 Java里类型的加载、连接和初始化过程都是在程序运行期间完成的,这为Java应用程序提供了高度的灵活性,Java里天生可以动态扩展。 类加载的时机 该流程中,加载、验证、准备、初始化和卸载这5个阶段顺序固定,解析阶段是动态的,与Java动态绑定符合。 当类.原创 2020-10-24 10:43:07 · 392 阅读 · 0 评论 -
还不懂类文件结构?看看这篇文章
值得强调的是,Java虚拟机并不是Java语言所独自占有的,虚拟机不关心来源是何种语言。只要输入规范的统一的程序存储格式——字节码文件,就能产生需要的效果 Class类文件结构 首先把干货罗列出来 Class类文件是一种“高效率”的结构 Class文件是一组以8位字节为基础单位的二进制流,数据项目严格按照顺序紧密排列,Class文件中几乎所有内容都是程序运行必要的数据,没有空隙。 Class文件按照顺序,大致分为 魔数(4字节) 版本号(5,6字节) 常量池-访问标志(access_flags) 类索.原创 2020-08-13 19:11:12 · 330 阅读 · 0 评论 -
轻松get JVM——垃圾收集器
对于上一篇所讲垃圾回收算法,是有专门的垃圾收集器实现算法的。 JVM说到底还是规范,垃圾收集器品种也有很多。下面讨论几种使用较多的垃圾收集器 使用 java -XX:+PrintCommandLineFlags -version来查看你所使用的垃圾收集器 使用 java -XX:+PrintFlagsFinal -version 查看所有配置项 本人现在的jdk版本为14,使用了G1垃圾收集器(JVM默认) 在本文撰写时间,比较受关注、典型的垃圾收集器有这几种 首先对这个图为不熟悉JVM的兄.原创 2020-07-29 14:35:19 · 349 阅读 · 0 评论 -
轻松get JVM——JVM垃圾回收算法
JVM中最重要的功能之一就是自动的垃圾回收机制了 JVM就像一个大工厂,要想掌控工厂,就必须了解JVM的种种设计 对象已死? 判断一个生命是否死亡似乎是简单的,但是内存中的对象可不是这么简单 怎样的对象才算死亡?这个问题大牛们似乎给出了合理的答案 当一个对象不存在指向它的引用,这个对象就可能判定为死亡。 JVM为了能够准确的判断对象的是否死亡,设计了种种算法,最主要的两种算法是 引用计数算法与可达性分析算法 引用计数算法 引用计数法的原理很简单,给对象添加一个引用计数器,每次引用就加一,失效就减一 .原创 2020-07-13 22:16:10 · 403 阅读 · 11 评论 -
轻松get JVM——HotSpot虚拟机对象
不同的虚拟机中对象的具体分布是不同的,目前Hotspot虚拟机使用的较为广泛,以该虚拟机为例,撰写一下Java堆中对象分配、布局和访问的全过程 Java对象的创建 首先需要提的是,Java的对象创建只能通过new指令 Java作为一种“安全”的语言,检查是家常便饭,new操作就存在了检查 new指令的过程: 类加载检查 检查该指令的参数能否在常量池中定位到 检查该类是否已经被加载 若为加载,则执行相应的类加载过程 虚拟机为新生对象分配内存 在这里开始描述前,有必要提前说明:对象在内存中占用的空间.原创 2020-07-12 18:52:53 · 300 阅读 · 0 评论 -
轻松get JVM——Java运行时的数据区域
Java内存区域的那些事 楼房之地基,知晓内存区域,才能知晓JVM Java的内存区域的管理是“全自动”的,每一个刚刚见识的人都会觉得神奇 Java的自动管理内存,使得我们不需要操作释放内存的代码,不容易出现内存泄漏与溢出的现象。 但是我们不得不提防,一旦出现了内存问题,知晓虚拟机的工作模式,才能排出错误。 运行时数据区域 这张图很重要,要熟记 Java虚拟机在执行Java程序时,将其所管理的内存划分为若干个不同的数据区域,这些区域有各自的用途,以及创建和销毁时间,有的区域,随着虚拟机进程的启动而原创 2020-07-10 14:55:00 · 707 阅读 · 0 评论