JVM 虚拟机

一、JVM 虚拟机常识
作为了解JVM 虚拟机的开始。我们很有必要弄明白以下两个问题。

1.什么是JAVA虚拟机
所谓虚拟机,就是一台虚拟的计算机。他是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。大名鼎鼎的VisualBox、VMware就属于系统虚拟机。他们完全是对物理计算机的仿真。提供了一个可以运行完整操作系统的软件平台。
程序虚拟机的典型代表就是Java虚拟机,它专门为执行单个计算机程序而设计,在Java虚拟机中执行的指令我们称为Java字节码指令。无论是系统虚拟机还是程序虚拟机,在上面运行的软件都限制于虚拟机提供的资源中。

2.JAVA 如何做到跨平台
同一个JAVA程序(JAVA字节码的集合),通过JAVA虚拟机(JVM)运行于各大主流操作系统平台
比如Windows、CentOS、Ubuntu等。程序以虚拟机为中介,来实现跨平台。

3.虚拟机基本结构
我们要对JVM虚拟机的结构有一个感性的认知。毕竟我们不是编程人员,认知程度达不到那么深入。

1)、类加载子系统
    负责从文件系统或者网络中加载Class(类)信息,加载的类信息存放于一块称为方法区的内存空间。除了类信息外,方法区中可能还会存放运行时常量池信息,包括字符串字面量和数字量。

2)、Java堆
    在虚拟机启动的时候建立,它是Java程序最主要的内存工作区域。几乎所有的Java对象实例都放Java堆中。堆空间是所有线程共享的,这是一块与Java应用密切相关的内存区间。

3)、Java的NIO库(直接内存)
    允许Java程序使用直接内存。直接内存是在Java堆外的、直接向系统申请的内存区间。通常访问直接内存的速度会优于Java堆。因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存。由于直接内存在Java堆外,因此它的大小不会受限于Xmx指定的最大堆大小。但是系统内存是有限的,Java堆和直接内存的总和依然受限于操作系统能给出的最大内存。

JAVA写一个项目 服务器上运行(足够的内存)100%以上

4)、垃圾回收系统
    垃圾回收系统是Java虚拟机的重要组成部分,垃圾回收器可以对方法区、Java堆和直接内存进行回收。

5)、Java栈
    每一个Java虚拟机线程都有一个私有的Java栈。一个线程的Java栈在线程创建的时候被创建。Java保存着帧信息,Java栈中保存着局部变量、方法参数,同时和Java方法的调用、返回密切相关。

4.虚拟机堆内存结构

JVM中堆空间可以分成三个大区,年轻代、老年代、永久代(方法区)。

新生代(年轻代):新生区
类在这里产生和应用,最后被垃圾回收。所有的类在伊甸区被new出来,当伊甸区满了,GC会对该区不用的对象销毁,剩余有用的转到幸存区。
老年代:老年区(养老区)
用于存放生成周期比较长的对象。
永久代:永久区
存放JDK自带的class,interface。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值