Java
chaoliu_lc
这个作者很懒,什么都没留下…
展开
-
JVM的内存结构
JVM的内存结构式是什么样的%多线程共享Java堆方法区:- 存放已被虚拟机加载的类信息、常量、静态变量、及时编译器编译后的代码等数据。- 同时包含运行时常量池,用于存放编译期生成的各种字面量和符号引用。当前线程独享Java栈:通常存放基本数据类型和对象的引用;本地方法栈:与虚拟机栈(Java栈)作用很相似,区别是虚拟机栈为虚拟机执行java方法服务,而本地方法栈则是为虚拟机用到的Native方法服务;程序计数器:当前线程所执行指令的行号指示器内存溢出和内存泄露的区别%原创 2020-08-20 23:23:20 · 147 阅读 · 0 评论 -
wait和sleep
为什么wait方法在object类中,sleep方法在Thread类中%sleep()是让某个线程暂停运行一段时间,其控制范围是由当前线程决定,也就是说,在线程里面决定.好比如说,我要做的事情是 “点火->烧水->煮面”,而当我点完火之后我不立即烧水,我要休息一段时间再烧.对于运行的主动权是由我的流程来控制.而wait(),首先,这是由某个确定的对象来调用的,将这个对象理解成一个传话的人,当这个人在某个线程里面说"暂停!",也是 thisOBJ.wait(),这里的暂停是阻塞,还是原创 2020-08-20 23:22:21 · 156 阅读 · 0 评论 -
volatile的理解
介绍一下和volatile相关的内存模型概念%内存的读写速度比CPU执行指令的速度慢很多程序运行过程中,需要先从主存复制到CPU的高速缓存中,运算结束后,再刷新到主存中单线程执行i=0, i=i+1不会出错,多线程,可能造成i最后还是1。硬件上有2种解决方式:上锁和缓存一致性协议(volatile)缓存一致性:其他CPU需要读取这个变量时,发现自己缓存中缓存该变量的缓存行是无效的,那么它就会从内存重新读取。介绍一下并发编程常见的问题%要想并发程序正确地执行,必须要保证原子性、可见性以原创 2020-08-20 23:20:21 · 310 阅读 · 0 评论