JVM
文章平均质量分 91
银河舰长
我的征途,在星辰大海。
展开
-
JVM基础之语法关键字的作用和原理(六)
1. new指令new指令用于在内存中分配空间,并执行对象的构造方法。因此2. static指令3. final指令4. volatile指令volatile指令用于限制机器指令的重排序,保证了工作内存对主存的可见性,其修饰的变量在编译为机器指令时,编译器对其进行了特殊处理。在volatile变量的写操作指令,前面插入StoreStore Barriers,后面插入StoreLoad...原创 2020-04-03 21:58:49 · 186 阅读 · 0 评论 -
JVM基础之虚拟机垃圾回收详解(五)
程序所使用的内存空间不断扩大,是GC算法演进的根本原因。一、垃圾回收器算法总览垃圾回收器(Garbage Collection)是Java虚拟机(Java Virtual Machine),用于清理堆空间(Heap Space)中无引用对象(Non-Reference Object)的算法的实现。1. Serial算法Serial是单线程的垃圾回收算法2. Parallel算法...原创 2020-03-28 17:34:27 · 263 阅读 · 0 评论 -
JVM基础之内存空间详解(四)
堆空间中进行的垃圾回收,是影响虚拟机性能的主要原因。自动垃圾回收机制是一把双刃剑,全面了解它才能掌握它。一、内存空间参数(JVM启动参数)非堆内存(永久区)参数-XX:PermSize 非堆内存初始大小值-XX:MaxPermSize 非堆内存允许最大值堆内存参数-XX:InitialHeapSize(-Xms) 堆内存初始大小值,单位可选m或g-XX:MaxHea...原创 2019-04-11 12:25:08 · 541 阅读 · 1 评论 -
JVM基础之类加载机制(三)
代码编译后产生字节码而不是本地机器码,是存储格式的一小步,却是编程语言的一大步。一、类加载机制概述虚拟机将描述类的.class文件加载到内存,并对数据进行校验,转换解析和初始化,最终生成可以被虚拟机直接使用的对象。Java中类型的加载、连接和初始化在程序运行期间完成,会有性能开销,但为Java程序提供了高度的灵活性,是天生的可动态扩展的语言。二、类加载的时机类在虚拟机中的生命周期...原创 2019-03-23 16:45:08 · 132 阅读 · 0 评论 -
JVM基础之垃圾回收和内存分配(二)
“合抱之木,生于毫末;千里之行,始于足下;九层之台,起于垒土。”一、堆内对象引用分析引用计数法引用计数法(Reference Counting)的实现简单,判定效率高,目前是python使用的GC算法。其为对象添加一个引用计数器,每当有一次引用,计数器就加1;引用失效时,计数器就减1;任何时刻计数器为0的对象就是不可能再被使用的。由于它很难解决对象之间互相循环引用的问题,因此没...原创 2019-03-23 16:44:22 · 158 阅读 · 0 评论 -
JVM基础之内存空间和异常(一)
“合抱之木,生于毫末;千里之行,始于足下;九层之台,起于垒土。”一、虚拟机运行时数据区程序计数器是一块较小的内存空间,可以看作是当前线程执行的字节码的行号指示器。根据虚拟机的概念模型,字节码解释器就是通过改变这个计数器的值来选取下一条需要执行的字节码指令(分支、循环、跳转、异常处理、线程恢复都依赖于计数器)。Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现...原创 2019-03-23 16:43:18 · 237 阅读 · 0 评论