JVM
JVM学习笔记
姓chen的大键哥
世界是一台冷漠而荒谬的机器,而我们渐渐被它放弃,成为局外人
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM是这样管理和回收资源的
Java技术体系中所提倡的自动内存管理解决了两个问题:对象分配内存回收对象分配给对象的内存对象主要分配在新生代的Eden区,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。但这不是绝对的,JVM中内定几条内存分配规则,有如下这些1.对象优先在 Eden 分配大多数情况下,对象在新生代 Eden 上分配,当 Eden 空间不够时,发起 Minor GC。2.大对象直接进入老年代大对象是指需要连续内存空间的对象,最典型的大对象是那种很长的字符串以及数组。经常出现大对象会提前触发垃圾原创 2020-07-02 13:50:14 · 153 阅读 · 0 评论 -
JVM内存中的对象
当对象创建后,对象在其生命周期内存活于Java虚拟机的内存中,一个对象从逻辑角度看,它由成员变量和成员函数构成,从物理角度来看,对象是存储在堆中的一串二进制数。1.对象在虚拟机内存中的布局在HotSpot虚拟机(OracleJVM)中,对象在内存中存储的布局可以分为3个区域,分别是● 对象头(Header)● 实例数据(Instance Data)● 对齐填充(Padding)1.1 对象头HotSpot虚拟机中的对象头包含两部分信息:1. 第一部分用于存储对象自身的运行时数原创 2020-07-02 13:46:48 · 274 阅读 · 0 评论 -
JVM是如何创造“女朋友”的
Java是一门面向对象的编程语言,在Java程序运行过程中不断有对象被创建出来。虚拟机遇到一条new指令时,会进行一系列对象创建的操作:1.检查常量池中是否有即将要创建的这个对象所属的类的符号引用; ● 若常量池中没有这个类的符号引用,说明这个类还没有被定义!抛出ClassNotFoundException; ● 若常量池中有这个类的符号引用,则进行下一步工作;2.进而检查这个符号引用所代表的类是否已经被JVM加载; ● 若该类还没有被加载,就找该类的class文件,并加...原创 2020-07-02 13:45:25 · 189 阅读 · 0 评论 -
JVM是如何进行类加载操作的
JVM的类加载机制:JVM把描述类的数据从Class文件中加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。与其他编译时需要进行连接工作的语言不同,在Java语言中,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种做***增加性能开销,但为Java应用程序提供了高度的灵活性。文章目录类加载时机类加载过程加载加载...原创 2019-12-02 16:07:50 · 184 阅读 · 0 评论 -
JVM垃圾回收机制
Java虚拟机的内存结构分为五个部分,分别是:程序计数器、Java虚拟机栈、本地方法栈、堆、方法区。既然是存储空间,为避免在Java程序运行期间发生内存溢出的情况,就需要一个能及时清理掉不再使用的内容,回收对应的内存空间的角色存在,这个角色就是垃圾收集器。现在很多内存的动态分配与内存的回收技术已经十分成熟,可以看作是进入了“自...原创 2019-07-29 20:42:00 · 119 阅读 · 0 评论 -
JVM垃圾回收算法
垃圾回收算法JVM中的垃圾回收器,使用不同的垃圾回收算法对JVM中的垃圾进行回收,不同的垃圾收集器使用的回收算法不一样,总体来说,垃圾回收算法主要有如下几种1.标记-清除算法**算法原理:**算法分两部分进行,先标记所有需要回收的对象,标记完成后直接将这些对象清除。在标记阶段,程序会检查每个对象是否为活动对象,如果是活动对象,则程序会在对象头部打上标记。在清除阶段,会进行对象回收并取消...原创 2019-07-29 20:43:17 · 172 阅读 · 0 评论 -
JVM内存结构
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。 -----《深入理解Java虚拟机》对于Java开发者来说,在虚拟机自动内存管理机制的帮助下,不在需要为每一个new操作去写配对的delete/free代码,极大的简化了开发流程。但把内存控制的权利交给虚拟机,...原创 2019-07-25 11:03:40 · 194 阅读 · 0 评论
分享