![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深入理解java虚拟机
文章平均质量分 76
十二遇见
所以我时常害怕,愿中国青年都摆脱冷气,只是向上走,不必听自暴自弃者流的话。能做事的做事,能发声的发声。有一分热,发一分光,就令萤火一般,也可以在黑暗里发一点光,不必等候炬火。此后如竟没有炬火:我便是唯一的光。倘若有了炬火,出了太阳,我们自然心悦诚服的消失。不但毫无不平,而且还要随喜赞美这炬火或太阳;因为他照了人类,连我都在内。我又愿中国青年都只是向上走,不必理会这冷笑和暗箭。纵令不过一洼浅水,也可以学学大海;横坚都是水,可以相通。几粒石子,任他们暗地里掷来;几滴秽水,任他们从背后泼来就是了这还算不到“大侮蔑”——因为大侮蔑也须有胆力。
展开
-
虚拟机字节码执行引擎
一、运行时栈帧结构 1.栈帧定义:用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机的虚拟机栈的栈元素。存储了局部变量表、操作数栈、动态连接、方法返回地址等信息,每一方法从调用开始到执行完成的过程,对于栈帧在虚拟机中里面入栈到出栈的过程。在代码编译期,栈帧需要多大的局部变量表、多深的操作数栈都已经确定,并写入到方法表的Code中,程序运行期不会改变。2.局部变量表 (1)局部变量表定义:原创 2017-04-07 15:04:09 · 189 阅读 · 0 评论 -
java内存区域与内存溢出异常
一、java虚拟机所管理的内存包括几个运行数据区域程序计数器 (1)在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指 令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 (2)每一个线程都有一个独立的程序计数器,线程私有的。 (3)程序计数器记录的正在执行线程的一个java方法原创 2017-03-30 12:04:36 · 429 阅读 · 0 评论 -
垃圾收集器与内存分配策略
一、对象已死嘛引用计数算法 (1)引用计数算法定义:给对象中添加一个引用计数器,每当在一个地方引用它,计数器值加1,引用实效计数器值减1,当计数器值为0时,对象就不再被使用。 (2)引用计数算法问题:主流的java虚拟机中没有选用引用计数算法来管理内存,主要是因为难以解决对象间相互循环引用问题。/** * testGC()方法执行后,objA、objB会不会被GC? *原创 2017-03-31 14:17:59 · 208 阅读 · 0 评论 -
Tomcat正统类加载器架构
1、Web服务器要解决的几个问题 (1)部署在同一个服务器上面的不同的Web应用程序所使用的Java类库可以实现相互隔离。 (2)部署在同一个服务器上面的不同的Web应用程序所使用的Java类库可以互相共享。 (3)服务器需要尽可能地保证自身的安全不受部署的Web应用程序影响。 (4)支持JSP应用的Web服务器,大多数都需要支持HotSwap功能。2.Tomcat5类加载器结构 Tomc原创 2017-04-10 15:54:38 · 420 阅读 · 0 评论 -
java内存模型与线程
一、硬件的效率与缓存一致性 1.解决计算机硬件处理器和内存交互缓慢的问题,在计算机系统中加入一层高速缓存作为中介。2.每一个处理器都有一个缓存,但是却共享一个内存,会出现缓存不一致问题,处理器在访问缓存的时候要遵循一些协议。3.处理器使用乱序执行优化使得处理器内部的运算单元尽量被充分利用。二、java内存模型 1.主内存和工作内存 (1)java内存模型的定义:在虚拟机中将变量存储到内存中和从原创 2017-04-12 16:41:04 · 387 阅读 · 0 评论 -
线程安全与锁优化
一、java 语言中的线程安全 1.java 中操作共享的数据的5类操作 (1)不可变:java语言中,如果共享数据是基本类型,只要定义时使用final关键字修饰就可以保证它不可变;如果共享数据类型是对象,那就需要保证对象的行为(对象中的方法)不会对其状态产生任何影响才行,最简单的就是把对象中带有状态的变量都声明为final,在构造函数结束后,这样就是不可变的了。线程安全的。在java API中原创 2017-04-13 15:14:41 · 305 阅读 · 0 评论 -
类文件结构
一、无关性的基石 1.java虚拟机只与不同语言编译器编译后的特定的二进制文件格式的class文件进行关联,并且这些class文件要遵循java虚拟机规范中的许多强制性和结构化约束。所以它是跨平台和跨语言的。二、class类文件结构 1.Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑的排列在Class文件之中,中间没有添加任何分隔符,没有空隙存在。当遇到需要占用原创 2017-04-05 18:55:35 · 205 阅读 · 0 评论 -
虚拟机类加载机制
一、概述 1.类加载机制定义:虚拟机把Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。2.在java中类型的加载、连接和初始化过程都是在程序运行期完成,这种策略会令类加载时稍微增加一些性能消耗,但提高了java应用程序的灵活性。java的多态就是依赖运行期动态加载和动态连接实现的。二、类加载的时机 1.类加载的生原创 2017-04-06 16:52:06 · 178 阅读 · 0 评论