博客专栏  >  编程语言   >  深入JVM

深入JVM

深入理解Java虚拟机内幕。

关注
0 已关注
12篇博文
  • Java类的生命周期包括哪几个阶段?

    一个Java类被加载到虚拟机中,它的生命周期才算开始,直到被从内存中卸载,它的生命周期才算结束。从开始到结束,它的整个生命周期包括加载、验证、准备、解析、初始化、使用和卸载7个阶段,其中验证、准备和解...

    2018-02-12 21:08
    371
  • Class文件中为什么要使用魔数?

    Class文件是一组以8位字节为基础单位的二进制流,文件中记录了一个类或接口的定义信息,文件中的各个数据项严格按照顺序紧凑排列,中间不使用分隔符,所以Class文件中存储的都是程序运行必要的参数。 ...

    2018-02-12 21:09
    185
  • JDK自带的命令行工具有哪些?

    在JDK的bin目录下包含了很多功能强大的命令行工具,它们的主要功能代码都是在jdk/lib/tools.jar中实现的。下面一一介绍这些命令行工具。 jps jps是JVM Process ...

    2018-02-12 21:11
    306
  • 虚拟机如何给对象分配内存?

    当创建一个对象时,需要给新生对象分配内存,而分配内存就是在堆上进行分配。在堆上进行分配的时候,可能在新生代的Eden区上,也可能在老年代中分配,具体的分配策略需要参考一些内存分配的规则。 优先在...

    2018-02-12 21:13
    362
  • Java虚拟机的垃圾收集器有哪些?

    Serial收集器 Serial收集器是新生代的垃圾收集器,是一个单线程的收集器,它开始工作时会暂停掉其它所有的工作线程,一直到它工作结束。它是虚拟机运行在Client模式下的默认新生代垃圾收集器,...

    2018-02-08 21:17
    128
  • Minor GC、Major GC和Full GC之间的区别?

    Minor GC Minor GC指新生代GC,即发生在新生代(包括Eden区和Survivor区)的垃圾回收操作,当新生代无法为新生对象分配内存空间的时候,会触发Minor GC。因为新生代中大多...

    2018-02-08 21:16
    307
  • 如何通过引用定位堆中对象的具体位置?

    当一个对象被创建后,要想使用它,可以通过Java虚拟机栈上的引用数据来操作堆上的具体对象,引用如何定位堆中对象的具体位置,不同的虚拟机实现不同,常用的定位方式有句柄和直接指针两种。 句柄方式 ...

    2018-02-08 21:12
    196
  • 如何确定JVM堆中哪些对象是可以被回收的

    垃圾回收器在对堆进行回收之前,需要确定堆中哪些对象是可以继续存活的,哪些是可以被回收的,Java采用可达性分析算法来判定对象是否可以继续存活。 这个算法的过程是通过一系列的称为“GC Roots”的...

    2018-01-30 22:05
    132
  • 如何通过代码查看JVM堆和非堆的使用情况

    MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean(); System.out.println(memoryMXBean.get...

    2018-02-04 12:19
    94
  • JVM的方法区可以实现垃圾回收吗?

    方法区和堆一样,都是线程共享的内存区域,被用于存储已被虚拟机加载的类信息、即时编译后的代码、静态变量和常量等数据。 根据Java虚拟机规范的规定,方法区无法满足内存分配需求时,也会抛出OutOfMe...

    2018-02-04 12:21
    93
  • JVM垃圾回收算法有哪几些?

    常用的垃圾回收算法有如下四种:标记-清除、复制、标记-整理和分代收集。 标记-清除算法 从算法的名称上可以看出,这个算法分为两部分,标记和清除。首先标记出所有需要被回收的对象,然后在标记完成后统一...

    2018-02-04 12:22
    60
  • Java虚拟机为新生对象分配内存有哪两种方式?

    当使用new关键字创建一个类的对象时,虚拟机需要为新生对象分配内存空间,而对象的大小在类加载完成后已经确定了,所以分配内存只需要在Java堆中划分出一块大小相等的内存。在Java虚拟机中有指针碰撞和空...

    2018-02-04 12:24
    112

img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部