简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
当一个对象被创建后,要想使用它,可以通过Java虚拟机栈上的引用数据来操作堆上的具体对象,引用如何定位堆中对象的具体位置,不同的虚拟机实现不同,常用的定位方式有句柄和直接指针两种。句柄方式句柄方式需要在堆中划分出一块区域用作句柄池,引用中存储的是对象的句柄地址,而句柄中存储了对象实例数据地址和类型数据地址。简单说就是,引用中存储的是对象的句柄地址,而这些句柄存储在堆中的句柄池中,而池中...
在JDK的bin目录下包含了很多功能强大的命令行工具,它们的主要功能代码都是在jdk/lib/tools.jar中实现的。下面一一介绍这些命令行工具。jpsjps是JVM Process Status Tool的简称,用于显示指定系统内所有的HotSpot虚拟机进程。常用的命令有:jps -l //用于输出主类的全名,如果运行的是jar包,则输出jar路径;jps -v //用...
当创建一个对象时,需要给新生对象分配内存,而分配内存就是在堆上进行分配。在堆上进行分配的时候,可能在新生代的Eden区上,也可能在老年代中分配,具体的分配策略需要参考一些内存分配的规则。优先在Eden区分配大多数情况下,新生对象都在新生代的Eden区进行内存分配,当新生代Eden区没足够空间的时候,会触发一次Minor GC。大对象直接进入老年代当一个新生对象需要大量连续空...
1.调用System.gc()方法显示调用System.gc()方法,可能会触发Full GC。因为System.gc()方法只是建议Java虚拟机尽最大努力去回收所有不...
对于HotSpot虚拟机来说,Java类的实例对象在内存中存储分为三块区域,分别是对象头、实例数据、对齐填充。对象头对象头包含两部分,第一部分用于存储对象自身运行时的数据,包括GC分代年龄、哈希码、锁状态、线程持有的锁等数据,这部分的数据长度在32位和64位虚拟机中分别为32位和64位,被称为“Mark Word”。对象头的另一部分用于存储对象的类元数据的指针,虚拟机通过这个指针可
方法区和堆一样,都是线程共享的内存区域,被用于存储已被虚拟机加载的类信息、即时编译后的代码、静态变量和常量等数据。根据Java虚拟机规范的规定,方法区无法满足内存分配需求时,也会抛出OutOfMemoryError异常,虽然规范规定虚拟机可以不实现垃圾收集,因为和堆的垃圾回收效率相比,方法区的回收效率实在太低,但是此部分内存区域也是可以被回收的。方法区的垃圾回收主要有两种,分别是对废弃常量
一个Java类被加载到虚拟机中,它的生命周期才算开始,直到被从内存中卸载,它的生命周期才算结束。从开始到结束,它的整个生命周期包括加载、验证、准备、解析、初始化、使用和卸载7个阶段,其中验证、准备和解析3个阶段又被统称为连接。加载加载阶段主要完成以下三件事:1.通过一个类的全限定名来获取此类的二进制字节流;2.将这个二进制字节流所代表的静态存储结构转为方法区的运行时数据结构; ...
$ vmstatprocs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------rbswpdfreebuffcachesisobiboincs us sy id wa st14 329796260404528 3
1.什么是缓存? 缓存是介于物理数据源与应用程序之间,是对数据库中的数据复制一份临时放在内存中的容器,其作用是为了减少应用程序对物理数据源访问的次数,从而提高了应用程序的运行性能。Hibernate在进行读取数据的时候,根据缓存机制在相应的缓存中查询,如果在缓存中找到了需要的数据(我们把这称做“缓存命 中"),则就直接把命中的数据作为结果加以利用,避免了大量发送SQL语句到数据库查询的性能损耗
《深入理解Spring系列之一:开篇》中提到在Spring容器启动的过程中,会将Bean解析成Spring内部的BeanDefinition结构,本篇将深入分析这个BeanDefinition的内部结构。直接看BeanDefinition源码,public interface BeanDefinition extends AttributeAccessor, BeanM