JVM
Kevin_cai09
无情的bug maker
展开
-
JVM(复习)java内存模型
JVM(复习)java内存模型文章目录JVM(复习)java内存模型1,并发编程中两个关键问题2,可见性,原子性和有序性2.1可见性2.2原子性2.3有序性3.内存屏障,指令重排和happens-before3.1内存屏障3.2指令重排序3.3happens-before4.volatile内存语义4.1 volatile特性4.2volatile如何禁止指令重排序5.锁的内存语义java...原创 2019-12-05 20:37:12 · 175 阅读 · 0 评论 -
JVM复习(晚期优化)
JVM复习(晚期优化)文章目录JVM复习(晚期优化)一,晚期(运行期)优化1.三种编译器2.编译器和解释器2.1编译器2.2解释器2.3联系3.编译对象和触发条件3.1基于采样的热点探测3.2基于计数器的热点探测1.方法调用计数器2.回边计数器4.编译优化技术一,晚期(运行期)优化1.三种编译器前端编译器:直接把.java文件转变成.class文件后端运行期编译器(JIT):把字节码转...原创 2019-12-03 16:26:45 · 178 阅读 · 0 评论 -
JVM(复习)类加载机制
JVM(复习)类加载机制文章目录JVM(复习)类加载机制一,类加载阶段二,连接阶段2.1验证2.1.1文件格式验证2.1.2元数据验证2.1.3字节码验证2.1.4符号引用验证2.2准备2.3解析三,初始化阶段3.1关于< clinit>()方法3.2什么时候对类进行初始化四,类加载器4.1类加载器4.2双亲委派模型五,类文件结构5.1.class类文件结构5.1.1魔数和版本号信息...原创 2019-11-29 00:10:26 · 124 阅读 · 0 评论 -
JVM(复习)垃圾收集器和内存分配策略
JVM(复习)垃圾收集器和内存分配策略文章目录JVM(复习)垃圾收集器和内存分配策略一,垃圾回收1.1哪些内存需要回收1.2什么时候回收1.2.1引用计数算法1.2.2可达性分析算法1.3怎样回收1.3.1标记-清除算法1.3.2复制算法1.3.3标记-整理算法1.3.4分代收集算法1.4垃圾收集器二,内存分配一,垃圾回收关于垃圾回收我们需要总结的点有三个:哪些内存需要回收什么时候...原创 2019-11-29 00:09:55 · 113 阅读 · 0 评论 -
JVM(复习)方法调用
JVM(复习)方法调用文章目录JVM(复习)方法调用一,方法重载二,方法重写一,方法重载何为静态类型,何为实际类型? static class GrandFather{ } static class Father extends GrandFather{ } static class Child extends Father{ }...原创 2019-11-29 00:09:05 · 125 阅读 · 0 评论 -
JVM调优—GC调优
1.堆内存分区在具体介绍GC调优前,先复习下JVM内存结构中的堆堆是JVM内存区域中所占空间最大的内存区域,是存放对象的区域,堆分区如下新生代eden区s0区s1区老年代其中新生代中的分区比例为:Eden区:s0区:s1区 = 8:1:1为什么要进行堆分区?主要是为了提高垃圾收集和对象内存分配的效率对象内存分配:1.对象优先在Eden区分配内存,也就是说,...原创 2019-05-17 22:49:20 · 571 阅读 · 0 评论 -
java中的绑定
浅谈java中的绑定1.什么是绑定?绑定是指一个方法的调用和该方法所属的类(所在的类)相关联,意思就是在执行方法调用的时候,jvm所知道调用了哪个类的方法,类和调用方法相关联java绑定分类:静态绑定(前期绑定)运行时绑定(后期绑定)2.静态绑定什么是静态绑定?静态绑定就是程序在执行前就知道了该方法所属的类,即在编译前该方法已经绑定,在java中只有private , stat...原创 2019-05-17 18:16:21 · 2130 阅读 · 1 评论 -
JVM调优—内存区域
一、jvm内存区域关于jvm内存模型的具体总结,这篇博客有详细的总结:jvm内存区域我们主要关注jvm中最主要的三块内存 — 堆,栈,方法区,而最容易最经常出现的内存错误OutOfMemoryError就很经常的很频繁的出现在这三个区域,因而,值得我们深究1.堆概念java堆是jvm中所占内存最大的一块区域,是被所有线程共享的一块区域,堆也是垃圾收集器重点照顾的区域,也有gc堆之称...原创 2019-05-14 00:32:01 · 252 阅读 · 0 评论 -
JVM(类文件结构和字节码指令)
一.类文件结构1.概述各种不同的平台的虚拟机与所有平台都统一使用的程序存储格式 — 字节码是实现平台无关性的基石所以我们有必要要了解class文件的文件结构是怎样的。2.Class文件结构class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑的排列在class文件之中,中间没有添加任何间隔符,这使得整个class文件中存储的内容几乎全部是程序运行的必要数据,没...原创 2019-04-25 00:54:54 · 256 阅读 · 0 评论 -
JVM (字节码执行引擎)
1. 局部变量表作用局部变量表是一组变量值存储空间,用于存放方法参数和方法内部定义的局部变量。存储局部变量表是以变量槽为最小单位存储(Slot),虚拟机规范中也没有指明一个Slot应该占用多大内存空间,对于32位的数据类型(byte、char、short、int、float、boolean、returnAddress),每个局部变量占用一个slot,而对于64位的数据类型(lon...原创 2019-04-28 01:34:28 · 314 阅读 · 0 评论 -
JVM (垃圾收集器分类和总结)
引言java和c++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进来,里边的人想出去一.简介垃圾收集,也叫作GC(Garbage Collection),历史久远,甚至比java历史还要长,因此,第一门使用垃圾收集的语言并不是java,而是Lisp垃圾收集需要完成的三件事:哪些内存需要回收?什么时候回收?如何回收?二.判断哪些内存需要回收及什么时候回收?...原创 2019-04-23 02:07:46 · 817 阅读 · 0 评论 -
JVM (类加载机制)
生命周期类从被加载到虚拟机内存中开始,到卸载出虚拟机内存为止,整个生命周期:一,类加载时机什么时候进入加载阶段java虚拟机规范中并没有进行强制约束,这点可以交给虚拟机的具体实现来自由把握。类初始化限定遇到new,getstatic,putstatic,invokestatic这四条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。使用java.lang.refl...原创 2019-04-26 01:50:21 · 104 阅读 · 0 评论 -
java内存区域和内存溢出异常
java内存区域概述对于从事c,c++的开发人员来说,他们需要负责内存管理,但是对于java程序员来说,在虚拟机自动内存管理机制的帮助下,不在需要为每一个new操作去写配对的delete/free,不容易出现内存泄漏和内存溢出的问题运行时数据区域虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途。其中有些区域随着虚拟机进程的启动而存在,而...原创 2019-04-13 01:57:25 · 171 阅读 · 0 评论