JVM简介java教程

JRE(JavaRuntimeEnvironment,Java运行环境),也就是Java平台。所有的Java程序都要在JRE下才能运行。普通用户只需要运行已开发好的java程序,安装JRE即可。

JDK(JavaDevelopmentKit)是程序开发者用来来编译、调试java程序用的开发工具包。JDK的工具也是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。

JVM(JavaVirtualMachine,Java虚拟机)是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。

3.JVM原理

JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。

java编译器只要面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。

4.JVM执行程序的过程

1)加载.class文件2)管理并分配内存3)执行垃圾收集

JRE(java运行时环境)由JVM构造的java程序的运行环,也是Java程序运行的环境,但是他同时一个操作系统的一个应用程序一个进程,因此他也有他自己的运行的生命周期,也有自己的代码和数据空间。JVM在整个jdk中处于最底层,负责于操作系统的交互,用来屏蔽操作系统环境,提供一个完整的Java运行环境,因此也就虚拟计算机。操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境:1)创建JVM装载环境和配置2)装载JVM.dll3)初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例4)调用JNIEnv实例装载并处理class类。

5.JVM的生命周期

1)JVM实例对应了一个独立运行的java程序它是进程级别a)启动。启动一个Java程序时,一个JVM实例就产生了,任何一个拥有publicstaticvoidmain(String[]args)函数的class都可以作为JVM实例运行的起点b)运行。main()作为该程序初始线程的起点,任何其他线程均由该线程启动。JVM内部有两种线程:守护线程和非守护线程,main()属于非守护线程,守护线程通常由JVM自己使用,java程序也可以表明自己创建的线程是守护线程c)消亡。当程序中的所有非守护线程都终止时,JVM才退出;若安全管理器允许,程序也可以使用Runtime类或者System.exit()来退出

2)JVM执行引擎实例则对应了属于用户运行程序的线程它是线程级别的

6.JVM的体系结构

7.JVM运行时数据区

第一块:PC寄存器

PC寄存器是用于存储每个线程下一步将执行的JVM指令,如该方法为native的,则PC寄存器中不存储任何信息。

第二块:JVM栈

JVM栈是线程私有的,每个线程创建的同时都会创建JVM栈,JVM栈中存放的为当前线程中局部基本类型的变量(java中定义的八种基本类型:boolean、char、byte、short、int、long、float、double)、部分的返回结果以及StackFrame,非基本类型的对象在JVM栈上仅存放一个指向堆上的地址。

第三块:堆(Heap)

它是JVM用来存储对象实例以及数组值的区域,可以认为Java中所有通过new创建的对象的内存都在此分配,Heap中的对象的内存需要等待GC进行回收。

(1)堆是JVM中所有线程共享的,因此在其上进行对象内存的分配均需要进行加锁,这也导致了new对象的开销是比较大的

(2)SunHotspotJVM为了提升对象内存分配的效率,对于所创建的线程都会分配一块独立的空间TLAB(ThreadLocalAllocationBuffer),其大小由JVM根据运行的情况计算而得,在TLAB上分配对象时不需要加锁,因此JVM在给线程的对象分配内存时会尽量的在TLAB上分配,在这种情况下JVM中分配对象内存的性能和C基本是一样高效的,但如果对象过大的话则仍然是直接使用堆空间分配

(3)TLAB仅作用于新生代的EdenSpace,因此在编写Java程序时,通常多个小的对象比大的对象分配起来更加高效。

(4)所有新创建的Object都将会存储在新生代YongGeneration中。如果YoungGeneration的数据在一次或多次GC后存活下来,那么将被转移到OldGeneration。新的Object总是创建在EdenSpace。

第四块:方法区域(MethodArea)

(1)在SunJDK中这块区域对应的为PermanetGeneration,又称为持久代。

第五块:运行时常量池(RuntimeConstantPool)

存放的为类中的固定的常量信息、方法和Field的引用信息等,其空间从方法区域中分配。

第六块:本地方法堆栈(NativeMethodStacks)

JVM采用本地方法堆栈来支持native方法的执行,此区域用于存储每个native方法调用的状态。

8.JVM垃圾回收

(1)对新生代的对象的收集称为minorGC;

(2)对旧生代的对象的收集称为FullGC;

(3)程序中主动调用System.gc()强制执行的GC为FullGC。

不同的对象引用类型,GC会采用不同的方法进行回收,JVM对象的引用分为了四种类型:

(1)强引用:默认情况下,对象采用的均为强引用(这个对象的实例没有其他对象引用,GC时才会被回收)

(2)软引用:软引用是Java中提供的一种比较适合于缓存场景的应用(只有在内存不够用的情况下才会被GC)

THE END
1.操作失误平台!JVMAOApp平台是被骗的局吗?拉掉遮羞布真相让人恼羞于是,王先生立即添加了“客服”的QQ为好友,通过简单交谈后,对方发给他一个二维码,让王先生下载名为“JVMAOApp ”的APP软件,这个app软件是一个同城“约会”软件。王先生立即在对方的指导下,下载并注册了账号。在向“客服”咨询如何使用该APP时,“客服”表示,充值会员即可获取美女的挑选权。王先生于是充值了58元,http://qinxifu.com/14799.html
2.有没有人啊!JVMAOApp新型骗术出炉不能提出!男子步步沦陷直到倾家JVMAOApp软件在平台不能提现怎么办? JVMAOApp软件这个软件靠谱可信吗? JVMAOApp软件在软件做任务被骗, JVMAOApp软件软件app平台是真的吗? JVMAOApp软件被骗无法提现,操作失误! JVMAOApp软件平台是騙局吗? JVMAOApp软件被骗无法出金如何维护自己的合法权益! http://1jiwang.com/78677.html
3.日文软件APP!“JVMAO”盈利不让提现被骗细节!大家不要上当了,物流JVMAO被骗防不胜防,一定要谨慎,不要相信百分百返现,再充值多少必返,操作失败需充值,那唯一成功的可能性都是骗子创造的,目的就是为了空手套白狼,遭遇网络诈骗时,立马选择法律途径追回方能及时止损,律所咨询电话:188 7123 0059林顾问 该平台表面上是一个约助推软件,声称可以帮助用户快速找到约会对象,但实际上却是一http://www.jinmidou.com/21298.html
4.被骗怎么办“JVMAOApp”软件平台不安全不可靠!被骗无法出金令人曝光平台:“JVMAOApp!”《JVMAOApp》被骗快跑!!不当被割的“韭菜”! 带单方式:一对一指导、几人一起做单、操作错误 出现问题:诱导操作、恶意带单、限制出金、后台操纵、冻结账户 以下案例分享网友亲身经历被骗真实案例,大家引以为戒!(案例略做改动,不做实际参考,一切以实际情况为准) http://m.jujuwan.cn/52184.html
5.ks3cnwlst + ant Web Seminar host by CINAOUG at 2011/05/02 7PM EST 问一个数据库字符编码的问题 very archaic issue : hating cassandra, just a little bit RESTful framework that supports JSON and JMS tran 请教目前比较流行的Java Web Service框架 Decorator pattern in java 学了点java,求兼职之类的。 http://ks3-cn-beijing.ksyun.com/attachment/a5852b32275a5e5e15e19603a0470ed9
6.www.intel.com/content/dam/docs/us/en/786901/23na6A+QTsch0mnPRov3SJVMAosnd+aVbCk2NlUSv217p1wVxyQiBorxE6VfvOND9FSz3pBwDoeAK0 VBCuvi9J94AvZDXNK6Ak+xnwNwKRj8fmZGC2wcwZgDnKSx2RcW4VL/xyqOpUj0A1ZAw9PNybUQxz BEnosa3leLS/M2Ylu8ZQANgDAHE3kjwit8k4QU1t+IGgn5CJNiReqXW04H82AGwz4j2hyMO7EnvC OzMzTBA1jAHmZKQYGCK3f7frgCNvI7x/1fA0ohttps://www.intel.com/content/dam/docs/us/en/786901/23-4/hly1692903312773.svg
7.java常用基础知识点总结(最全)HashTable容器在竞争激烈的并发环境下表现出效率低下的原因在于所有访问HashTable的线程都必须竞争同一把锁,那假如容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并发访问效率,这就是ConcurrentHashMap所使用的锁分段技术,首先https://blog.csdn.net/liuerchong/article/details/107751054
8.都是假的!JVMAOApp是做任务诈骗软件,受骗操作错误为由不给提现4.冒充 《JVMAO》 App软件做任务被骗! **JVMAOApp:任务诈骗软件的警惕与应对** 近年来,随着智能手机的普及,越来越多的应用程序宣称可以通过完成简单的任务来获得奖励。然而,其中一些应用实际上是通过欺骗用户来谋取利益,其中JVMAOApp就是一个典型例子。许多用户在下载安装后,发现自己不仅无法顺利提现,还因为操作“https://www.jianshu.com/p/134c46d97d44
9.嘎嘎被骗!《JVMAO》受骗了!不正规不可信!真是郁闷《JVMAO》受骗了!不正规不可信!真是郁闷 最近,各类免费“约pao”在全国各地爆发,像这样的短信、小卡片我也收到过,很多男同胞们被骗得惨不忍睹。有很多男性朋友可能会经常收到“同城约pao”等短信,或者是通过刷视频自动弹出来的“同城约会”链接,种种这些信息,都是来自骗局的开始。刷单本身就是违法的,天上不http://www.fanliweng.com/66287.html
10.自己酿下的:JVMAOApp点赞关注背后竟然是这种套路,真相让人不寒而栗!曝光平台:“JVMAOApp!”《JVMAOApp》被骗快跑!!不当被割的“韭菜”! 带单方式:一对一指导、几人一起做单、操作错误 出现问题:诱导操作、恶意带单、限制出金、后台操纵、冻结账户 以下案例分享网友亲身经历被骗真实案例,大家引以为戒!(案例略做改动,不做实际参考,一切以实际情况为准) http://www.jurencaifu.com/120516.html