云计算高级培训,Tomcat运维JVM 虚拟机常识

云计算高级培训,Tomcat运维JVM 虚拟机常识,作为了解JVM 虚拟机的开始。我们很有必要弄明白以下问题。

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

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

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

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

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

本地方法栈和java栈非常类似,最大的不同在于java栈用于方法的调用,而本地方法栈则用于本地方法的调用,作为对java虚拟机的重要扩展,java虚拟机允许java直接调用本地方法(通常使用C编写)

PC(Program Counter)寄存器也是每一个线程私有的空间,java虚拟机会为每一个java线程创建PC寄存器。在任意时刻,一个java线程总是在执行一个方法,这个正在被执行的方法称为当前方法。如果当前方法不是本地方法,PC寄存器就会指向当前正在被执行的指令。如果当前方法是本地方法,那么PC寄存器的值就是undefined

执行引擎是java虚拟机的最核心组件之一,它负责执行虚拟机的字节码,现代虚拟机为了提高执行效率,会使用即时编译技术将方法编译成机器码后再执行。

原文地址:http://blog.51cto.com/13694927/2117579

时间: 2024-10-08 14:21:44

云计算高级培训,Tomcat运维JVM 虚拟机常识的相关文章

运维基础--虚拟机的使用(一)

虚拟机的使用   开始使用Linux操作系统时,首先可能会接触到两个主要的界面:GUI和CLI,即图形界面个命令界面,而运维一般极少使用到图形界面. 一.命令提示符的格式:[[email protected]~] #    root:当前登录用户账户名称    mylab11:非完整格式的计算机名称   ~  : 执行命令时的当前目录(Current Direction),又叫工作目              录(Working Direction)         ~符号代表了用户的家目录 H

结合Ansible在AWS云计算平台上实现运维自动化

刚刚看了金山梁晓聪的"在AWS上的运维自动化实践分享",发现技术都是相通的,大家都是用最好的技术.我们的业务平台主要也是AWS云计算平台,尝试了许多自动化运维/配置工具,最后还是选终了Ansible. 下一步在公司运维自动化DevOps要做的工作:增大Ansible在系统中的应用比重,真正跟AWS结合起来.选择 Ansible 主要因为丰富的相关支持,包括很多现有的组件和模块和开源的 Ansible 部署和脚本.笔者也尝试了市面上所有自动化运维和自动化配置工具,发现Ansible是对A

云计算开发教程:运维工程师必会技能--sar

今天这篇文章是给大家分享一些云计算开发教程,今天讲解的是:运维工程师必会技能--sar. SAR是系统活动报告(System Activity Report)英文单词的首字母缩写.正如它的名字所表示的那样,SAR是一个在Unix和Linux操作系统中用来收集.报告和保存CPU.内存.输入输出端口使用情况的命令.SAR命令可以动态产生报告,也可以把报告保存在日志文件中. 如果你没有安装该软件包,可以使用下面一条命令来安装它. [[email protected] ~]# yum install s

Python培训是运维还是全栈,有什么区别吗?

Python语言无论是在学术上还是就业上现在都非常受欢迎,很多人都在学习Python.就像大家也都在知乎问Python是运维还是全栈,有没有什么区别. 说到运维和全栈的区别......其中运维是已经在从事运维工作的人(比如说运维工程师)通过学习Python增加自己的技能:全栈则可以简单理解为:啥都懂一些,架构,前端,后端,安全,应用, 代码...... 所以如果你是一个运维新手,想学个语言的话,请用Python,为什么呢?因为Python是个综合语言,前后端都可以,还好学.你如果能学好Pytho

初识运维3--在虚拟机中安装Linux发行版系统(CentOS)的方法

在讲Linux系统发行版本的安装过程之前,先大略说明一下虚拟化. 虚拟化:将底层硬件资源抽象为用户更容易读懂和使用的逻辑抽象层的技术. 最早由IBM提出,现使用率较高的虚拟化软件平台有三类:VMware workstation.VirtualBOX.HyperV.在这里使用VMware workstation作为例子讲解说明安装过程. 虚拟化网络: 桥接模式:让物理机和虚拟机利用物理网络接口完成通信.虚拟机可以访问互联网. 仅主机模式:让虚拟机和物理机利用被虚拟出来的VMnet1网络接口完成通信

使用Visual VM 查看linux中tomcat运行时JVM内存

前言:在生产环境中经常发生服务器内存溢出,假死或者线程死锁等异常,导致服务不可用.我们经常使用的解决方法是通过分析错误日记,然后去寻找代码到底哪里出现了问题,这样的方式也许会奏效,但是排查起来耗费时间比较多,或者说本身代码本身就没有错,而是访问量大时候消耗内存太多,垃圾对象没有及时回收等等其他情况导致的,这样排查异常起来异常困难,那么有没有一些可视化的工具,帮助我们可以详细地查看当前应用服务的内存情况,从而为我们在解决异常.优化代码.优化服务等方面提供一些建议呢?幸好,jdk为我们免费提供一个这

JAVA和Tomcat运维整理

安装JAVA和Tomcatapache-tomcat-8.5.37.tar.gz  jdk-8u191-linux-x64.rpm [[email protected] ~]# ll /usr/java/total 0lrwxrwxrwx. 1 root root 16 Jan 14 16:41 default -> /usr/java/latestdrwxr-xr-x. 8 root root 258 Jan 14 16:41 jdk1.8.0_191-amd64lrwxrwxrwx. 1 r

如何修改Tomcat运行时jvm编码

问题: 最近在部署项目的时候出现数据乱码的情况,经过一番查看项目都是用的UTF-8编码格式,数据也是,但是经过调用接口传给对方就乱码了. 由于是部署在Windows环境下,Windows默认编码GBK,这就导致了jvm运行时编码不一致的问题,修改也很容易. 解决办法: Linux环境下如果使用的UTF-8编码,可以不用修改,因为Linux默认为UTF-8 war包部署在Tomcat 修改jvm编码 Linux环境 在catalina.sh配置 JAVA_OPTS="$JAVA_OPTS -Dfi

运维基础--虚拟机的使用(二)

四.Linux的哲学思想:   1)一切皆文件: 把几乎所有的资源都抽象为文件的形式,甚至连硬件,网络通信使用的套接字以及管道都是如       此: 文件是一组有边界(有大小)的位于存储设备中的流式数据: 2)整个系统由众多功能单一的小程序组成,却可以实现复杂任务: 功能单一:每个小程序只做好一件事: 复杂任务:尽可能完美的组合多个小程序,使其功能发挥至极致: 3)尽量避免与用户进行直接交互,易于以编程的方式实现自动化任务实施:   4)使用纯文本文件保存程序的配置信息: 一个文件有两个数据: