1 初识JVM】的更多相关文章

做了这么久的开发,到目前为止对JVM也只是一些简单的概念上的理解,正好周末于是将JVM的学习提上日程. JVM 概念 JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的.        一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码.而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译.Java语言使用Java虚拟机屏蔽了…
发展历史 1996年,SUN JDK 1.0 Classic VM 发布,纯解释运行,使用外挂进行JIT 1997年 JDK1.1 发布.包含了:AWT.内部类.JDBC.RMI.反射 1998年 JDK1.2 Solaris Exact VM:JIT 解释器混合,Accurate Memory Management 精确内存管理,数据类型敏感,提升的GC性能.JDK1.2开始 称为Java 2,J2SE J2EE J2ME 的出现,加入Swing Collections 2000年 JDK 1…
前言: Java语言里负责解释执行字节码文件的是Java虚拟机,即JVM——Java Virtual Machine(Java虚拟机). 执行Java程序的两个步骤: 由Java语言编写的程序需要进过编译步骤,但这个编译步骤并不会生成特定平台的机器码,而是生成一种与平台无关的字节码(*.class文件).这种字节码不是可执行的,必须使用Java解释器来解释执行.所有Java语言既不是纯粹的编译型语言,也不是纯粹的解释型语言.Java程序的执行过程必须经过先编译,后解释两个步骤. JVM: Jav…
一.JVM在计算机中的位置 JVM调用操作系统,操作系统调用硬件,硬件反馈信息至操作系统,操作系统反馈信息至JVM 二.JVM的体系结构 JVM在执行过程中对内存的管理分为5个区域: 1.PC寄存器 2.Java虚拟机栈(JVM Stack) 3.本地方法栈(Native Method Stack) 4.Java 堆内存(Java Heap) 5.方法区(Method Area) 三.JVM区域按照功能图解 四.JVM区域按照内存是否共享图解 五.JVM体系结构 1.类装载器(ClassLoad…
文章目录 JVM的概念 JVM是Java Virtual Machine的简称.意为Java虚拟机 虚拟机 有哪些虚拟机 VMWare或者Visual Box都是使用软件模拟物理CPU的指令集 JVM使用软件模拟Java 字节码的指令集 JVM发展历史 1996年 SUN JDK 1.0 Classic VM 1997年 JDK1.1 发布 1998年 JDK1.2 Solaris Exact VM 2000年 JDK 1.3 Hotspot 作为默认虚拟机发布 2002年 JDK 1.4 Cl…
声明:本文主要参考https://www.cnblogs.com/codeobj/p/12021041.html 仅供个人学习.研究之用,请勿用于商业用途,如涉及侵权,请及时反馈,立刻删除. 一.Java内存结构 1.Java堆(Java Heap) java堆是java虚拟机所管理的内存中最大的一块,是被所有线程共享的一块内存区域,在虚拟机启动时创建.此内存区域的唯一目的就是存放对象实例,这一点在Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配. java堆是垃圾收集器管理的…
本文主要参考:http://blog.csdn.net/CSDN_980979768/article/details/47281037?locationNum=7&fps=1 声明:主要用于个人技术知识框架的搭建,无商业用途,如有侵权,请及时反馈,立刻删除. Java是一种技术,它由四方面组成:Java编程语言.Java类文件格式.Java虚拟机.Java应用程序接口(Java API).它们的关系如下图所示: 运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编…
一.我们为什么要对JVM做优化 在本地开发环境中我们很少会遇到需要对JVM进行优化的需求,但是到了生产环境,我们可能会有下面的需求: 运行的应用"卡住了",日志不输出,程序没有反应 服务器的CPU负载突然升高 在多线程应用下,如何分配线程的数量? 本次使用的JDK版本为1.8 二.JVM的运行参数 在jvm中有很多的参数可以进行设置,这样可以让jvm在各种环境中都能够高效的运行,绝大部分的参数保持默认即可. 2.1 三种参数类型 jvm的参数类型分为三类,分别是: 标准参数 -help…
记录于 2022-01-02  17:25:12  GhostFace 1. 什么是JVM? 概念 来自百度百科 JVM是 Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的. 引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译.Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(…
垃圾收集主要是针对堆和方法区进行:程序计数器.虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于> 线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收. GC - Java垃圾回收机制 判断一个对象是否可被回收 1. 引用计数算法 给对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1.引用计数为 0 的对象可被回收. 这个方法实现简单,效率高,但是目前主流的虚拟机中并没有选择这个算法来管理内存,其最主要的原因是它很难解决对象之间相互循环引…
堆的分配参数: -Xmx //设立最大堆 -Xms //最小堆,初始化堆大小 -Xmn  //设置新生代(eden+2*surviivor+old)大小   官方推荐:3/8Xmx------>感觉就是-XX:NewRatio 2到3之间 -XX:NewRatio //新生代(eden+2*s)和老年代(不包含永久区,永久区是非堆)的比值 2表示 新生代:老年代=1:2,即年轻代占堆的1/3,一般来说,老年代占比较多 -XX:SurvivorRatio //8 表示 (两个)Survivor :…
计算机内存模型 在程序运行时,CPU通过访问主存获取数据,但随着CPU的快速发展,CPU访问速度越来越高,硬件无法满足CPU的条件下,大多内存加入了高速缓存机制,不同CPU都有对应的多级(一般为三)缓存,CPU取数时会先按照一级缓存-二级缓存-三级缓存-主存的顺序进行访问,提高了访问速度,但同时不同的CPU的缓存内的数据可能是不一样的,造成CPU与主存不能实现数据同步 JAVA内存模型 JAVA内存模型(Java Memory Model,JMM)是符合计算机内存模型规范的,通过设置内存屏障,屏…
一.初识JVM(虚拟机) JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的. 引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译.Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行. 二.Java为什么是"平台无关的编程语言&q…
目录 初识JVM 双亲委派机制 沙箱安全机制 Native PC计数器 方法区 栈 堆 工具分析OOM GC算法 GC算法总结 JMM 初识JVM JVM的位置:jre中包含jvm. 双亲委派机制 双亲委派机制:是指当一个类加载器收到一个类加载请求时,该类加载器首先会把请求委派给父类加载器.每个类加载器都是如此,只有在父类加载器在自己的搜索范围内找不到指定类时,子类加载器才会尝试自己去加载. 在IDE中编写的Java源代码会被编译器编译成.class文件,然后再由ClassLoader(类加载器…
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > .katex-html { display: block; } .katex-display > .katex > .katex-html > .tag { position: absolute; right: 0px; } .katex { font: 1.21em / 1.2 KaTeX…
JVM是按照运行时数据的存储结构来划分内存结构的,JVM在运行java时,将他们划分成几种不同格式的数据,分别存储在不同的区域,这些数据统一称为运行时数据,运行时数据包括java程序本身的数据信息和JVM运行java需要的额外的数据信息. JMM要理解 JVM运行时数据区 程序计数器--------线程私有 java虚拟机栈------线程私有 本地方法栈--------线程私有 Jav堆-------------线程公用 方法区------------线程公用 锁机制 JVM内存分配 1:栈内…
JVM初识: java只是启动JVM的命令.JVM真实位置: C:\Program Files\Java\jdk1.8.0_121\jre\bin\server\jvm.dll 1. 第一行JDK版本 2. 第二行JRE版本 3. 第三行JVM版本 1. 混合模式:速度最快(默认) 2. 解释模式:解释运行 3. 编译模式:编译优化运行 在HostSpot中,方法区在Perm永久代. Heap包括Young新生代和Tenured年老代,不包括Perm. 一个java线程启动一个stack,一个s…
首先java代码是以 .java结尾的文件,通过javac命令编译生成.class编译生成字节码文件,再通过java命令,把字节码文件加载到内存内部,此时是类加载器ClassLoader执行加载,通过JIT对字节码文件进行解释执行,我们此时针对不同的操作系统,翻译成操作系统对应的机器语言.所有java语言是跨平台的. JDK:Java Development Kit (包含JRE JVM) java语言软件开发工具包 JRE:Java Runtime Environment(包含JVM) jav…
1.Java程序运行过程 编写 编译 运行 过程如图所示: 2.JVM的认识 定义:JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,  是通过在实际的计算机上仿真模拟各种计算机功能来实现的,JVM存在jre当中.JVM包括:一套字节码指令集.一组寄存器.一个栈.一个垃圾回收堆.一个存储方法域. 为什么使用它:使用JVM才能实现java的跨平台机制 作用:java程序(java编译器在jdk或jre中)编译后会启动…
先来看一张图 首先jvm是什么? jvm是java运行环境的一部分,是一种以软件模式虚拟出来的一个计算机系统. 如上图所示,JVM 主要分为三个子系统:类加载器.运行时数据区和执行引擎. 类加载器子系统 加载.链接(验证.准备.解析).初始化 运行时数据区 方法区.栈(管运行).堆(管存储).程序计数器.本地方法栈 执行引擎 运行时数据区存储着要执行的字节码,执行引擎将会读取并逐个执行. JVM 内存结构(方法区.栈(管运行).堆(管存储).程序计数器.本地方法栈) 常说的 JVM 内存结构指的…
Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以极强的安全性.平台无关性.硬件结构无关性.语言简洁.面向对象的特点,在网络编程语言中占据了无可比拟的优势,成为实现电子商务系统.企业管理平台.移动设备应用开发等的首选语言. Java的起源 Java编程语言最初是为家用电器设计的,因为其特点刚好适合于Internet,于是通过在Inernet上的应用得以迅速流行,成为一种计算语言.一个平台.一个网络 计算机的架构 Java平台分类 SUN公司根据硬件平…
初识python 一.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOBE排行榜,Python赶超PHP占据第五!!! 图 由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!! Python可以应用于众多领域,如:数据分析.组件集成.网络服务.图像处理.数值计算和科学计算…
基础概念 特点: 完全面向对象,动态 解释性,简单.易移植,跨平台 安全健壮,高性能 多线程,分布式 三种核心机制: Java虚拟机 Java Virtual Machine 垃圾收集机制 Garbage collection 代码安全性检测 Code Security Java源文件结构 Java程序执行步骤: .java源文件,先编译 -> .class(与平台无关的字节码文件) -> 后解释,通过 JVM -> 特定平台的机器码 package packageName; impor…
Python开发[第二篇]:初识Python   Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOBE排行榜,Python赶超PHP占据第五!!! 由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!! Python可以应用于众多领域,如:数据分析.组…
  第一章    初识Java 1.  什么是Java? Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以其强安全性.平台无关性.硬件结构无关性.语言简洁.面向对象的特点,在网络编程语言中占据了无可比拟的优势,成为实现电子商务系统.企业管理平台.移动设备应用开发等的首选语言. 2.  java的发展 java之父——James Gosling java在1995年5月23日正式发布. ①   1996年1月23i又发布了首个java开发工具包,即J…
目录 1.扯淡 2.Python历史 3.Python简介 4.Python应用 5.为什么是python而不是其他语言? 6.Python的种类 7.Python的特点 8.Python设计哲学 9.Python版本 10.Python环境(安装.解释器.编码.注释.传参.变量.流程控制.数据类型.运算.文本操作)   1.扯淡 由于是开篇,着实有点儿小激动......此处省略一万字,虽然写博客很伤脑细胞也费时费电,但大王说了,这是牛13的开始.    其实我接触Python的一个契机是在做N…
前言 很喜欢的一句话,与诸位共勉. 人的一切痛苦,本质上都是对自己无能的愤怒----王小波. 初识Python 一.它的爸爸是谁 首先,我们需要认识下面这位人物. 他是Python的创始人,吉多范罗苏姆(Guido van Rossum).1989的圣诞节为了打法时间开发出来的.哎,想想,都是差距.... 二.需要理解的一些概念: 1.C语言编译完就是机器码,机器码可以直接在处理器上执行. 2.CPU可以直接读取机器码. 3.Python是用C写的. 4.Python解释器会把代码内容读到内存里…
介绍JVM中7个区域,然后把每个区域可能造成内存的溢出的情况说明 程序计数器:看做当前线程所执行的字节码行号指示器.是线程私有的内存,且唯一一块不报OutOfMemoryError异常. Java虚拟机栈:用于描述java方法的内存模型:每个方法被执行时都会同时创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等信息.每一个方法被调用直至执行完成的过程就对应着一个栈帧在虚拟机中从入栈到出栈的过程.如果线程请求的栈深度大于虚拟机所允许的深度就报StackOverflowError, 如果…
初识Android的ReactiveX 开发一个复杂一点的Android应用都会用到网络请求,交互和动画.这些都意味着 要写很多的回调嵌套.这样的代码也被称为callback hell(回调地狱).这样的 代码不仅长,很难理解,而且也是错误高发的地方.ReactiveX 提供了一个清晰.准确处理异步问题和事件的方法. RxJava是一个ReactiveX在JVM上的实现,由NetFlix开发.这个库在Java开发者中 广为流传.这个教程中你会学到如何在Android应用开发中使用RxJava.这…