JVM
world6
这个作者很懒,什么都没留下…
展开
-
JVM 的体系结构
java的内存空间分为:方法区,程序计数器,本地方法栈,虚拟机栈,堆;方法区:方法区是系统分配的一个内存逻辑区域,有运行时常量池、静态变量、类信息;注意:方法区里有个静态区,静态区专门存放静态变量和静态代码块。虚拟机栈:虚拟机栈就是我们常说的栈空间了; 栈空间里存放的是局部变量表,动态链接,操作数栈,以及是方法的出口;每个栈帧都会随着方法的开始和结束相应的出栈和入 栈;原创 2016-08-19 17:23:05 · 474 阅读 · 0 评论 -
Java内存模型分析
1、内存模型的相关概念在讲内存模型前,我们来谈谈硬件的效率与一致性的问题计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要原创 2017-05-31 16:51:15 · 732 阅读 · 0 评论 -
一次单例模式引发的深思
为了让博客看起来不那么深入,我觉得可以让加入一点故事情节~ 锻炼一下以后写不动代码改写小说的能力~最近准备找工作,这不今天就有家喊我去面试的;我一大早的就赶到了公司;此处省略1万字跟面试官的客套话,直接进入正题;面试官:小胡,你知道哪些设计模式阿?我说:设计模式了解得不多,只知道单例模式跟工厂模式,装饰模式,适配器模式,享元模式,观察者模式;面试官:哟,知道得还挺多的啊,行,先原创 2017-06-05 11:15:51 · 626 阅读 · 2 评论 -
volatile关键字解析
在给 volatile关键字解析 之前 希望看本文的朋友对Java内存模型有一定的了解;不了解的朋友可以先看看Java内存模型volatile关键字有什么用呢?1、保证了不同线程访问同一个变量时的可见性,也就是说A线程修改了一个变量的值,B线程C线程能马上就能看到这个变量的最新值。2、禁止指令的重排序。1、volatile关键字能保证可见性吗?看一个简单的例子:原创 2017-05-31 17:42:00 · 468 阅读 · 0 评论 -
初遇单例模式之双重检测
为了让博客看起来不那么深入,我觉得可以让加入一点故事情节~ 锻炼一下以后写不动代码改写小说的能力~最近准备找工作,这不今天就有家喊我去面试的;我一大早的就赶到了公司;此处省略1万字跟面试官的客套话,直接进入正题;面试官:小胡,你知道哪些设计模式阿?我说:设计模式了解得不多,只知道单例模式跟工厂模式,装饰模式,适配器模式,享元模式,观察者模式;面试官:哟,知道得还挺多的啊,行,先原创 2017-06-01 20:44:09 · 389 阅读 · 0 评论 -
<二>深入理解Threadlocal 关于内存泄漏的思考
不知道经常使用 Threadlocal 的朋友有没有意识到内存泄漏这一点。什么是内存泄漏呢?对象已经没有在其它地方被使用了,但是垃圾回收器没办法移除它们,因为还在被引用着。我不用的对象,又不能被垃圾回收,就会造成内存泄漏。不了解垃圾回收的朋友看这篇文章:垃圾回收的细节简单的拿个图表示下:如果你了解垃圾回收机制,活着看过周志明老师的 深入理解java虚拟机 第二版, 你肯定 知道强,软,弱,虚。...原创 2018-01-22 11:16:20 · 1089 阅读 · 1 评论 -
<一>深入理解Threadlocal的实现原理
文章开头我想说,这是一篇面向不怎么懂 Threadlocal 的朋友的博客,所以有的人会觉得有点啰嗦,但不论您水平高低,相信耐着性子看完也一定会有收获。上次去深圳的一家大型的互联网金融公司面试,就被问到了 Threadlocal , 当时只是在代码里看到过用它来管理session。第一次看到的时候,当时觉得这么高深的东西还是以后去研究吧,结果就是面试官的一脸鄙视。。。花了一天时间好好看了一下源码...原创 2018-01-21 16:00:52 · 565 阅读 · 0 评论 -
Java垃圾回收的细节
大家都知道 java 的垃圾回收机制,java有自己的垃圾回收器来自动回收垃圾。本人对于垃圾回收机制以前也就知道java的垃圾回收器是自动回收垃圾的,有这么回事,知道有finalize和system这两个方法而已,别人都跟我说,你知道java虚拟机有垃圾回收这回事就可以了,你不用操心这个的,我也一直深信不疑,并感叹java 虚拟机真神奇!直到我对 java 的理解逐渐加深后,才发现并不是那么回原创 2016-08-01 15:54:30 · 822 阅读 · 0 评论 -
java类的加载过程和类加载器的分析
我们知道,我们写的java代码保存的格式是 .java, java文件被编译后会转换为字节码,字节码可以在任何平台通过java虚拟机来运行,这也是java能够跨平台的原因。那JVM是如何来让我们写的java文件运行的呢? 这个问题通常的问法好像是:类是如何被加载的。 记得第一次遇见这个问题的时候,同学给我的回答是:1.虚拟机会加载JDK里类的核心包2.虚拟机会加载JDK里原创 2016-07-27 08:41:52 · 3765 阅读 · 2 评论