类加载器详解 1,644 次访问 2019-11-09 类加载器的作用是:通过一个类的全限定名来获取描述此类的二进制字节流,应用程序可以使用虚拟机提供的类加载器,也可以通过自定义类加载器来实现获取所需要的类 命名空间 对于虚拟机中的任意一个类,它的唯一性是由加载它的类加载器和它本身一同确立的。每一个类加载器都拥有一个独立的命名空间,每个被当前类加载器加载 Read More
虚拟机类加载机制 1,234 次访问 2019-10-20 在Java语言中,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会在运行时因为类加载增加一些性能开销,但是也为Java应用程序带来了高度的灵活性,我们通过预定义和自定义的类加载器,可以让一个Java程序在运行时从网络或任何加载器中定义的方式加载一段二进制流作为程序代码的一部分 类 Read More
线程基础 425 次访问 2019-09-07 线程模型 在Java中,代表线程的Thread类中大多方法都是由与平台相关的Native方法实现的,由于各类操作系统中线程模型不同,所以Java线程模型的实现也必然有差别,事实上,JVM规范中也并未规定Java中线程需要使用哪种模型来实现,完全依赖于虚拟机的具体实现。 在Windows版和Linux Read More
JVM GC策略 237 次访问 2019-06-02 在JVM内存区域中,虚拟机栈,本地方法栈,程序计数器的生命周期和线程绑定,栈中栈帧的数据结构和大小都是确定的,在出栈后即可被回收,因此在这三个区域中不需要太多考虑垃圾收集的问题,GC关注的区域主要集中在堆内存和方法区中,尤其是堆内存,是GC发生最频繁也是最关键的区域,想要指定一个好的垃圾收集策略主要 Read More
深入Java内存方法区 221 次访问 2019-04-20 Java内存的方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。本章深入了解下这些个部分是什么。 ClassLoader加载class文件和存储文件信息的流程 当一个classLoder启动的时候,classLoader的生存地点在jvm中的堆 Read More
深入Java内存虚拟机栈 261 次访问 2019-04-11 在JAVA内存区域中提到虚拟机栈,每个java方法在执行时,会创建一个“栈帧(stack frame)”,每个栈帧存储局部变量表,操作栈,动态链接,方法出口几个部分,本章深入了解下这些个部分是什么,它们如何合作帮助方法执行完成。 局部变量表 局部变量表是一组变量值存储空间,用以存储方法参数与方法内 Read More
JAVA内存区域 230 次访问 2019-04-02 大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区),Heap(堆),Program Counter Register(程序计数器), VM Stack(虚拟机栈,也有翻译成JAVA 方法栈的),Native Method Stack (本地方法栈) 其中Me Read More