jvm
介绍(很好的一篇文章)
1 JVM
简?/p>
JVM
是我?/p>
Javaer
的最基本功底了,刚开始学
Java
的时候,一般都是从
“Hello World”
开始的?/p>
然后会写个复杂点
class
?/p>
然后再找一些开源框架,
比如
Spring
?/p>
Hibernate
等等,再然后就开发企业级的应用,比如网站、企业内部应用?/p>
实时交易系统等等,直到某一天突然发现做的系统咋就这么慢呢,而且时不时还来个内存
溢出什么的,今天是交易系统报了
StackOverflowError
,明天是网站系统报了?/p>
OutOfMemoryError
,这种错误又很难重现,只有分?/p>
Javacore
?/p>
dump
文件,运气好
点还能分析出个结果,运行遭的点,就直接去庙里烧香吧!每天接客户的电话都是战战?/p>
兢的,生怕再出什么幺蛾子了。我?/p>
Java
做的久一点的都有这样的经历,那这些问题的最
终根结是在哪呢?—?/p>
JVM
?/p>
JVM
全称?/p>
Java Virtual Machine
?/p>
Java
虚拟机,
也就是在计算机上再虚拟一个计?/p>
机,这和我们使用
VMWare
不一样,那个虚拟的东西你是可以看到的,这?/p>
JVM
你是?/p>
不到的,它存在内存中。我们知道计算机的基本构成是:运算器、控制器、存储器、输?/p>
和输出设备,
那这?/p>
JVM
也是有这成套的元素,
运算器是当然是交给硬?/p>
CPU
还处理了?/p>
只是为了适应
“
一次编译,随处运行
”
的情况,需要做一个翻译动作,于是
就用?/p>
JVM
自己的命令集?/p>
这与汇编的命令集有点类似?/p>
每一种汇编命令集针对一个系?/p>
?/p>
CPU
,比?/p>
8086
系列的汇编也是可以用?/p>
8088
上的,但是就不能跑在
8051
上,?/p>
JVM
的命令集则是可以到处运行的,因为
JVM
做了翻译,根据不同的
CPU
,翻译成不同
的机器语言?/p>
JVM
中我们最需要深入理解的就是它的存储部分,存储?硬盘?/p>
NO
?/p>
NO
?/p>
JVM
?