博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JVM虚拟机
阅读量:5927 次
发布时间:2019-06-19

本文共 933 字,大约阅读时间需要 3 分钟。

  1. Java虚拟机的原理

    所谓虚拟机,就是一台虚拟的机器,他是一款软件,用来执行一系列虚拟计算指令,大体上虚拟机可分为系统虚拟机和程序虚拟机,他们完全是对物理的计算的仿真,提供一个可以运行完整操作系统的软件平台。

    程序虚拟机典型代码就是Java虚拟机,他专门为执行单个计算程序而计算,在Java虚拟机中执行的指令我们称为Java字节码指令,无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中。

    Java发展至今,出现过很多虚拟机,最初sun使用的一款叫做ClassIc的Java虚拟机,到现在引用最广泛的HotSpot虚拟机,除了Sun以外,还有BEA的jrockit,目前jrockit和HostSopt都被Oracle收入旗下,大有整合的趋势。

  2. 认识Java虚拟机的基本结构.

    • 类加载系统:负责从文件系统或者网络加载Class信息,加载的信息存放在一块称之为方法区的内存空间。
    • 方法区:存放类的信息,常量信息,常量池信息,包括字符串字面量和数字常量
    • Java堆:在Java虚拟机启动的时候建立Java堆,他是Java程序最主要的内存工作区域几乎所有的对象实例都存放到Java堆中,堆空间是所有线程共享
    • 直接内存:JavaNio库允许Java程序直接内存,从而提高性能,通常直接内存速度会优于Java堆,(把数据直接放到内存中)Redis
    • Java栈:每个虚拟机线程都有一个私有栈,一个线程的Java栈在线程创建的时候被创建,Java栈保存着局部变量,方法参数,返回值等
    • 本地方法栈:和Java栈非常类似,最大不同为本地方法栈用于本地方法调用
    • 垃圾回收系统:Java的核心,也是不可少的,Java有一套自己的进行垃圾清理的机制,开发人员无需手工清理.
    • PC寄存器:寄存器也是每个线程私有的空间,Java虚拟机会为每个线程创建pc寄存器
    • 执行引擎:虚拟机的核心组件就是执行引擎,他负责执行虚拟机的字节码,一般会先进行编译成机器码后执行
  1. 总结

    具体划分为如下5个内存空间(非常重要)

    • 栈:存放局部变量
    • 堆:存放所有new出来的东西
    • 方法区:被虚拟机加载是类信息,常量,静态常量等
    • 程序计数器(和系统相关)
    • 本地方法栈
  • Good Luck!

转载地址:http://vyrvx.baihongyu.com/

你可能感兴趣的文章
2010 Web前端技术趋势及总结 Facebook摘全明星MVP
查看>>
传IE9最终预览版将包括ActiveX插件过滤功能
查看>>
2008十大病毒排行:“网游窃贼”最毒
查看>>
MVC2.0本地化(另类解决方案)&“.NET研究”lt;下>
查看>>
C Packet Sniffer Code with Libpcap and Linux Sockets (BSD)
查看>>
MLP 之手写数字识别
查看>>
卡特兰数总结
查看>>
使用SQL Server 2014 In-Memory 内存数据库时需要注意的地方
查看>>
(转)Edge实现NodeJS与.NET互操作(包括UI界面示例)
查看>>
mysql----innodb统计信息
查看>>
MATLAB 的函数句柄
查看>>
php移动文件的函数 move_uploaded_file()和copy
查看>>
Spread for Windows Forms高级主题(2)---理解单元格类型
查看>>
Java与C++函数参数传递比较
查看>>
Implementation of Kernel Timers
查看>>
分享一个jQuery的全屏幻灯展示插件:Supersized 3.2
查看>>
fix是bmp的一种衍生格式,可用于asp生成验证码图形
查看>>
细化—lhMorpThin
查看>>
像TransactionScope一样使用DbTransaction
查看>>
深度剖析ASP.NET架构—HttpHandler(三)
查看>>