java核心技术-多线程之线程内存模型

 对于每一种编程语言,理解它的内存模型是理所当然的重要。下面我们从jvm的内存模型来体会下java(不限java语言,严格来讲是JVM内存模型,所有JVM体系的变成语言均适用)的内存模型。

 

堆: 就是我们写程序new出来的对象存放的内存。

方法区:就是存放类字节码和常量的内存。

虚拟机栈:就是局部变量(方法内定义的变量以及方法的入参、返回值),线程栈的内存。

本地方法区: 就是jvm本地调用时使用的内存。

程序计数器:就是程序运行到字节码哪行的指示器的内存。

好了,看如下一段代码:

当我们执行上面代码的时候,内存大致如下布局

    相信结合着静态代码和图,大家对于线程在jvm内存中的分布就一目了然。上面有个程序计数器没有讲,这里简单补充下,程序计数器是被线程持有的,也就是每个线程都有有个程序计数器,用于指示当前线程执行到那个指令,程序计数器占用的内存大小是非常小的,在实际应用中我们时常忽略不计这部分内存。好了内存模型部分讲的差不多了,下节开始正式java 多线程之旅。本节内容属于个人理解,如有错漏之处,欢迎之处,不胜感激。

posted @ 2018-09-14 10:02  xgoing  阅读(143)  评论(0编辑  收藏  举报