码迷,mamicode.com
首页 > 编程语言 > 详细

Java虚拟机一 内存管理机制

时间:2017-11-03 00:15:13      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:一行代码   内存分配   详细   java语言   cpu   记录   自己   方法   ges   

Java虚拟机的内存管理主要分两点:内存分配以及内存回收。·

一、内存分配图:

技术分享

注: 所占区域的大小与实际的内存大小比例并无直接关系。

解读:

1、如图,分成两种颜色的内存区域,其中蓝色的是线程隔离的数据区,也就是说每一个线程都有自己的这么一个区域存放自己的数据,而青色区域则是线程共享的,里面的数据为所有线程共有,原则上都有权限访问。

2、程序计数器:

用途:用来给程序导航指路的。这个是一块较小的内存空间,可以看做是当前线程执行的字节码的行号指示器。理解就是虚拟机把java源代码编译成了字节码,然后程序被执行,但是程序执行是需要顺序的,什么时候该执行什么代码呢?就是靠这个程序计数器来实现的,字节码解释器在工作的时候会改变这个计数器的值,来选取下一条需要执行的字节码指令。

特点:

(1)、每个线程一个。大家知道,所谓的多线程事实上是把时间进行切片然后把细碎的时间无序的分配给多个线程使用,cpu在多个线程之间切换,看起来就像是多个线程同时执行。在频繁的线程切换中药保证每一个线程在被执行的时候都能够正确的执行下一行代码,就需要给每一个线程分配一个独立的程序计数器。所以程序计数器是在蓝色区域,是每一个线程都独立拥有的,数据线程隔离。

(2)、因为是记录一个虚拟机字节码指令地址的,所以不会有内存溢出。

注意:如果线程执行的是一个java方法,这个计数器记录的是正在执行的续集字节码的指令地址,而如果正在执行的是一个Native方法,则计数器为空。
    Native方法:如果翻译的话是翻译成“本地方法”。理解的话就是一个java接口,但是它的实现不是使用java语言。详细一点的介绍一篇博客:                                http://blog.csdn.net/wike163/article/details/6635321。

 

// 该睡觉了。。。明天继续

 

Java虚拟机一 内存管理机制

标签:一行代码   内存分配   详细   java语言   cpu   记录   自己   方法   ges   

原文地址:http://www.cnblogs.com/heisehenbai/p/7775222.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!