最近看了《深入理解虚拟机》的内存分配与管理这部分的内容,这里做一个的总结,以加深我对知识点的理解,如有错误的地方,还望大神们指出,我及时更正; 内存区域划分 首先是下面这幅图: 图 1.0 这幅图是网上download下来的,但是它可以很直观告诉我们Java虚拟机所管理的几个内存区域(包括方法区、堆 ...
分类:
编程语言 时间:
2016-09-24 13:20:47
阅读次数:
196
1.多线程访问的共享资源存在线程安全问题, 无外乎访问两种共享资源。 1)多线程访问方法区数据。存在线程安全问题,通过加锁 2)多线程访问实例变量:被访问对象是单例时存在线程安全,被访问对象是多例时,是线程安全的。 来说说静态变量、实例变量、局部变量在多线程下的安全问题吧! (一)验证静态变量的线程 ...
分类:
编程语言 时间:
2016-09-22 17:00:03
阅读次数:
155
1.static的作用 答:将成员变量或方法存储进方法区。因为方法区能保证数据只存在一份,只会加载一次(类加载器加载类的时候才加载一次) 注:static Object obj = new Object();方法区存储的是obj这个引用变量,而不是Obejct这个被创建的对象,对象依旧存储在堆中。只 ...
分类:
其他好文 时间:
2016-09-22 06:30:37
阅读次数:
255
相同点: 1、都可以被继承 2、都不能被实例化 3、都可以包含方法声明 4、派生类必须实现未实现的方法 区别: 1、抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件、和方法声明,不能包含字段。 2、抽象类是一个不完整的类,需要进一步细化,而接口是一个行为规范。微软的自定义接口总是 ...
相同点: 1、都可以被继承 2、都不能被实例化 3、都可以包含方法声明 4、派生类必须实现未实现的方法 区 别: 1、抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件、和方法声明,不能包含字段。 2、抽象类是一个不完整的类,需要进一步细化,而接口是一个行为规范。微软的自定义接口总 ...
转自:http://blog.csdn.net/cutesource/article/details/5906705 版权声明:本文为博主原创文章,未经博主允许不得转载。 版权声明:本文为博主原创文章,未经博主允许不得转载。 JVM内存组成结构 JVM栈由堆、栈、本地方法栈、方法区等部分组成,结构图 ...
分类:
其他好文 时间:
2016-09-19 12:53:21
阅读次数:
132
计时器setTimeout()和setInterval()两个都是js的计时功能的函数两个有些区别,下面为大家简单介绍下,希望对大家有所帮助 计时器setTimeout()和setInterval()两个都是js的计时功能的函数两个有些区别,下面为大家简单介绍下,希望对大家有所帮助 计时器setTi ...
分类:
其他好文 时间:
2016-09-17 23:26:11
阅读次数:
111
1.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身2.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中3.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量
分类:
编程语言 时间:
2016-09-17 22:04:12
阅读次数:
182
Jvm(Java虚拟机)内存模型 从Jvm内存模型中入手对于理解GC会有很大的帮助,不过这里只需要了解一个大概,说多了反而混淆视线。 Jvm(Java虚拟机)主要管理两种类型内存:堆和非堆。堆是运行时数据区域,所有类实例和数组的内存均从此处分配。非堆是JVM留给自己用的,包含方法区、JVM内部处理或 ...
分类:
移动开发 时间:
2016-09-17 10:39:50
阅读次数:
366
JVM的主要结构如下图所示,图片引用自舒の随想日记。 方法区和堆由所有线程共享,其他区域都是线程私有的 程序计数器(Program Counter Register) 类似于PC寄存器,是一块较小的内存区域,通过程序计数器中的值寻找要执行的指令的字节码,由于多线程间切换时要恢复每一个线程的当前执行位 ...
分类:
其他好文 时间:
2016-09-13 22:26:03
阅读次数:
206