
深入学习Java虚拟机
文章平均质量分 92
梳理Java虚拟机中的重要知识点,了解底层知识,更好地为日常开发服务。
BridgeGeorge
脚踏实地,展望未来
展开
-
Java虚拟机(九)——Java语法糖
介绍 在Java 编程中,做循环操作莫过于使用while或者for了。 比如 int i=0; while(i10){ //do something... i++; } 再比如 int []attr={1,2,3,4,5,6}; for(int i=0;iattr.length;i++){ //do sth... } 当然 还有 do while原创 2017-05-19 14:58:02 · 583 阅读 · 0 评论 -
Java虚拟机(一)——Java内存区域划分
介绍 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。运行时数据区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序计数器原创 2016-08-18 19:53:53 · 1580 阅读 · 0 评论 -
Java虚拟机(二)——Java堆内存划分
堆内存介绍 在《Java虚拟机(一)——Java内存区域划分》一文中介绍了Java 虚拟机 内存划分的内容,其中讲到堆内存(Heap)。对于大多数应用来说,Java堆(Java Heap)是Java 虚拟机所管理的内存中最大的一块。此内存区域的唯一目的就是存在对象实例,几乎所有的对象实例都在这里分配内存。这个区域也是Java 垃圾收集器管理的主要区域,因此很多时候也被称为”GC堆”。所以堆内原创 2016-08-23 17:21:37 · 4945 阅读 · 0 评论 -
Java虚拟机(三)——类加载机制
介绍 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被Java虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 类从被加载到虚拟内存中开始,到卸载内存为止,它的整个生命周期包括了:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使原创 2016-08-25 21:48:39 · 1222 阅读 · 0 评论 -
Java虚拟机(四)——对象的创建、存储和定位
对象的创建 Java是一门面向对象的编程语言,Java 程序运行过程中无时无刻都有对象被创建出来,在语言层面上,创建对象(例如克隆,反序列化)通常仅仅是一个new关键字而已,例如下面的语句。Object obj = new Object(); 其实在在虚拟机中,当遇到上述语句时,其执行过程大致要经历下面几个阶段。 类加载检查 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中原创 2016-08-26 00:16:43 · 1557 阅读 · 4 评论 -
Java虚拟机(五)——垃圾收集机制
垃圾回收介绍 Java虚拟机内存划分讲到了Java 内存运行时区域的各个部分,其中程序计数器,虚拟机栈,本地方法栈三个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来是就已知了。因此这几个区域的内存分配和回收都具有确定性,在这几个区域就需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟随着回收原创 2016-08-29 23:29:19 · 2628 阅读 · 10 评论 -
Java虚拟机(六)——内存溢出和内存泄露分析
内存溢出和内存泄露 内存溢出: 内存泄露: 内存溢出场景 内存泄露场景 内存泄漏是指无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成内存空间的浪费称为内存泄漏。内存泄露有时不严重且不易察觉,这样开发者就不知道存在内存泄露,但有时也会很严重,会提示你Out of memory。 Java内存泄漏的根本原因是什么呢?长生命周期的对象持有短生命周期对象的引用就很原创 2016-08-31 23:44:08 · 1780 阅读 · 0 评论 -
Java虚拟机(七)——理解四种引用类型
介绍 如果一个内存中的对象没有任何引用的话,就说明这个对象已经不再被使用了,从而可以成为被垃圾回收的候选。不过由于垃圾回收器的运行时间不确定,可被垃圾回收的对象的实际被回收时间是不确定的。对于一个对象来说,只要有引用的存在,它就会一直存在于内存中。如果这样的对象越来越多,超出了JVM中的内存总数,JVM就会抛出OutOfMemory错误。虽然垃圾回收的具体运行是由JVM来控制的,但是开发人员原创 2016-09-02 00:03:12 · 2609 阅读 · 1 评论 -
Java虚拟机(八)——Java内存模型
Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。为了获得较好的执行效能,Java内存模型并没有限制执行引擎使用处理器的特定寄存器或缓存来和主内存进行交互,也没有限制即时编译器调整代码执行顺序这类权利。原创 2016-09-02 16:59:56 · 1018 阅读 · 1 评论