jvm 这我就能会了 擦

最近老有人问jvm,恕我直言,完蛋了,不会,慢慢学吧,开始第一个学习,后续补充,走起。。。html

我看的他的http://www.javashuo.com/article/p-poxahysy-cd.html算法

咱们(确定不)知道,计算机CPU和内存的交互是最频繁的,内存是咱们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度愈来愈快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待致使CPU的等待成本,可是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,所以,为了解决这一纠纷,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状

CPU的主频不可能无限制的增加,要想不少的提高新能,须要多个处理器协同工做,就是多核

基于高速缓存的存储交互很好的解决了处理器与内存之间的矛盾,也引入了新的问题:缓存一致性问题。在多处理器系统中,每一个处理器有本身的高速缓存,而他们又共享同一块内存(下文成主存,

main memory 主要内存),当多个处理器运算都涉及到同一块内存区域的时候,就有可能发生缓存不一致的现象。为了解决这一问题,须要各个处理器运行时都遵循一些协议,在运行时须要将这些协议保证数据的一致性。这类协议包括MSI、MESI、MOSI、Synapse、Firely、DragonProtocol等

--------------------------------------------------我擦,这都是些啥。虚拟机内存模型中定义的访问操做与物理计算机处理的基本一致!缓存

JVM的逻辑内存模型以下:jvm

一、程序计数器学习

做用能够看作是当前线程所执行的字节码的行号指示器spa

二、Java 虚拟机栈线程

它的生命周期与线程相同。虚拟机栈描述的是Java 方法执行的内存模型:每一个方法被执设计

行的时候都会同时建立一个栈帧(Stack Frame ①)用于存储局部变量表、操做栈、动态3d

连接、方法出口等信息。每个方法被调用直至执行完成的过程,就对应着一个栈帧在htm

虚拟机栈中从入栈到出栈的过程。

三、本地方法栈

虚拟机栈为虚拟机执行Java 方法(也就是字节码)服务,而本地方法栈则

是为虚拟机使用到的Native 方法服务,就是c写的那些native

四、Java 堆

Java 堆(Java Heap)是Java 虚拟机所管理的内存中最大的

一块。Java 堆是被全部线程共享的一块内存区域,在虚拟机启动时建立。此内存区域的

惟一目的就是存放对象实例,几乎全部的对象实例都在这里分配内存.

Java 堆是垃圾收集器管理的主要区域,所以不少时候也被称作“GC 堆”

 

收集器基本都是采用的分代收集算法,因此Java 堆中还能够细分为:新生代和老年代;

再细致一点的有Eden 空间、From Survivor 空间、To Survivor 空间等

------后边我得开一篇,这里搞不了了,装逼之地老是须要深刻研究,看到这里我就想说这tm,哎就差在这里

五、方法区

用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。虽

然Java 虚拟机规范把方法区描述为堆的一个逻辑部分,可是它却有一个别名叫作Non-

Heap(非堆),目的应该是与Java 堆区分开来

 

不少人愿意把方法区称为“永久代”(Permanent Generation)


 

--------------------------------------其余的区我不认,由于不懂,懂了再写,爱咋咋的

如今个人理解,好比这个http://www.javashuo.com/article/p-pyxvlzha-ea.html

 

我本身的学习博客,这个看了容易跟着我跑偏,持续更新

相关文章
相关标签/搜索