JVM内存模型
来源:互联网 发布:风水织梦网站源码 编辑:程序博客网 时间:2024/06/05 10:34
- jVM的启动流程
- JVM的基本结构
- 内存模型
- 代码块
- 小结
jVM的启动流程
先来说下JVM的启动流程
1) 创建JVM装载环境和配置
2) 装载JVM.dll
3) 初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例
4) 调用JNIEnv实例装载并处理class类。
JVM的基本结构
总体来说分为三部分
- 加载.class文件
- 执行垃圾收集
有了上图的基本了解后,再看看每个结构的工作内容有哪些。
其实每一个线程有一个工作内存和主存独立,他们的内存模型是什么样的
内存模型
当数据从主内存复制到工作存储时,必须出现两个动作:第一,由主内存执行的读(read)操作;第二,由工作内存执行的相应的load操作;当数据从工作内存拷贝到主内存时,也出现两个操作:第一个,由工作内存执行的存储(store)操作;第二,由主内存执行的相应的写(write)操作。
对于普通变量,一个线程中更新的值,不能马上反应在其他变量中
如果需要在其他线程中立即可见,需要使用 volatile 关键字
代码块
代码块语法遵循标准markdown代码,例如:
public class VolatileStopThread extends Thread{private volatile boolean stop = false;public void stopMe(){stop=true;}public void run(){int i=0;while(!stop){ i++; } System.out.println("Stop thread");}public static void main(String args[]) throws InterruptedException{VolatileStopThread t=new VolatileStopThread();t.start();Thread.sleep(1000);t.stopMe();Thread.sleep(1000);}
没有volatile -server 运行 无法停止
小结
jvm内存模型中变量的可见性在工作中是常遇见的。若你没有注意到这点,那么难免就会中招。更新变量无效。这是不可忽视的一个问题。
阅读全文
2 0
- [jvm]JVM内存模型
- 【理解JVM】JVM内存模型
- JVM初探 -JVM内存模型
- JVM初窥:JVM内存模型
- 理解 JVM:JVM 内存模型
- JVM内存模型
- JVM内存模型基础知识
- 图解JVM内存模型
- JVM内存模型
- 一 JVM内存模型
- JVM的内存模型
- 图解JVM内存模型
- JVM内存模型
- 图解JVM内存模型
- 【转】jvm 内存模型
- JVM 内存模型
- JVM内存模型
- JVM内存模型
- 熊大UWB系列教程二:KEIL软件环境搭建以及程序下载
- 《Inside C#》笔记(十五) 非托管代码 下
- mybatis新增(三)
- 转载 MYSQL协议分析
- Java中Arrays.asList()
- JVM内存模型
- 计算机网络总结
- 三.第一个Gradle应用程序(Application形式的jar程序)
- 信源编码作业——LMS算法
- 牛客网彩色瓷砖C/C++解决
- 简析Lock与synchronized
- This version of the rendering library is more recent than your version of Android Studio. Please upd
- Mysql开发技巧
- 基于pycaffe从零开始写mnist(第一篇)——生成txt文件