![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java虚拟机
文章平均质量分 79
冰橘柠檬
这个作者很懒,什么都没留下…
展开
-
Java虚拟机--内存结构
1.JVM是什么? JVM:Java Virtual Mechinal(Java虚拟机).它是一个虚构的计算机,是通过在实际的计算机上模拟各种功能来实现的。JVM的主要工作是解释自己的指令集(字节码,如java源码编译成class文件在虚拟机上运行)并映射到本地的CPU指令集或OS的系统调用。Java语言跨平台的本质就是不同的操作系统使用不同的JVM映射规则,使其与操作系统无关,从而实现跨平...原创 2018-07-30 10:55:34 · 2962 阅读 · 0 评论 -
Java虚拟机--内存模型
内存模型同并发息息相关,熟悉内存模型将对虚拟机、多线程及线程安全问题有更深入的了解。 1.什么是内存模型? 给出定义之前,让我们先来了解一下物理计算机中的并发问题。我们都知道,处理器运行时必然要和内存交互,而且这个I/O操作是很难消除的,但由于计算机存储设备和处理器的运算速度有几个数量级的差距,所以在两者之间加入了一层读写速度尽可能接近处理器运算速度的高速缓存,这样处理器就不用等待...原创 2018-07-30 12:49:43 · 172 阅读 · 0 评论 -
Java虚拟机--对象模型
参考:Hollis博客–深入理解多线程 让我们思考这样一个问题:一个Java对象如何在基于c++实现的系统中运行?对象在JVM内部是如何表示的?它在内存中是如何存储的…… 1.OOP-Klass 二分模型 Java是面向对象的语言,面向对象有三个特征:封装、继承和多态。而HotSpot基于C++实现,C++也是面向对象的语言,那这样的话为每一个Java类生成一个C++类不...原创 2018-07-30 15:30:17 · 169 阅读 · 0 评论 -
Java虚拟机--JVM内存结构 VS Java内存模型 VS Java对象模型
转载:HollisChuang’s Blog Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模型和Java对象模型,这就是三个截然不同的概念,但是很多人容易弄混。 可以这样说,很多高级开发甚至都搞不不清楚JVM内存结构、Java内存模型和J...转载 2018-07-30 15:55:35 · 158 阅读 · 0 评论 -
Java虚拟机--垃圾回收机制
Java与C++相比,具有动态分配内存和垃圾回收机制的技术优势,使得我们不用把精力集中在内存的管理上,那我们为什么还要去了解GC和内存分配呢?原因很简单:当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。 1.为什么进行垃圾回收 随着程序的运行,系统内存中存在的对象实例、各种变量越来越多,如果不进行...原创 2018-07-31 21:06:21 · 204 阅读 · 0 评论 -
Java虚拟机--JIT编译器
1.什么是JIT编译器 JIT编译器,即Just-In-Time Compiler(即时编译器)。JIT编译属于动态编译(即运行时编译)的一种,与之对应的是静态编译(AOT)。 2.为什么要用JIT编译器 我们都知道,通常通过javac将程序源代码编译(前端编译,与语言有关,机器无关)成字节码,JVM通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释...原创 2018-08-01 11:33:56 · 657 阅读 · 0 评论 -
Java虚拟机--类加载机制
1.什么是类加载机制 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 2.类的加载时机 图中的七个阶段代表着类的生命周期,其中加载、验证、准备、初始化和卸载的顺序是确定的,按这种顺序按部就班的“开始”,而解析则不一定:它在某些情况下可以在初始化阶...原创 2018-08-01 20:01:38 · 150 阅读 · 0 评论 -
Java虚拟机--常用Java命令
参考资料:Java命令学习系列 1.Java常用命令 jps:查看本机的Java进程信息。 jstack:打印线程的栈信息,制作线程Dump。 jmap:打印内存映射,只做堆Dump。 jstat:性能监控工具。 jhat:内存分析工具。 jconsole:简易的可视化控制台。 jvisualvm:功能强大的控制台。 2.什么是Java Dump?...原创 2018-08-01 20:33:31 · 592 阅读 · 0 评论 -
Java虚拟机--编译与反编译
当我们写完HelloWorld.java文件后,计算机怎么知道我们要干什么?那就需要说下编译了(可见文章:JIT编译),这里也简单补充点: 1.编程语言: 编程语言分为高级语言和低级语言:C、C++、Java等属于高级语言;机器语言和汇编语言属于低级语言。那和编译有什么关系呢? 简而言之,编译就是把程序员认识的高级语言转换成机器认识的低级语言的过程,可用命令javac进行编译...原创 2018-08-03 14:33:01 · 691 阅读 · 0 评论