#类中的元素0.成员变量 1.成员函数 2.静态成员变量 3.静态成员函数 4.虚函数 5.纯虚函数#影响对象大小的因素0.成员变量 1.虚函数表指针(_vftptr) 2.虚基类表指针(_vbtptr) 3.内存对齐_vftptr、_vbtptr的初始化由对象的构造函数, 赋值运算符自动完成;对....
分类:
其他好文 时间:
2014-09-21 14:35:00
阅读次数:
360
在讲解String之前,我们先了解一下Java的内存结构。一、Java内存模型按照官方的说法:Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。 JVM主要管理两种类型内存:堆和非堆,堆内存(HeapMemory)是在 Java 虚拟机启动时创建,非堆内存(Non....
分类:
编程语言 时间:
2014-09-17 13:35:42
阅读次数:
323
http://my.oschina.net/u/567296/blog/303780 JVM的内部结构如下图: JVM主要包括两个子系统和两个组件: ? ? 1. 两个子系统分别是Class loader子系统和Execution engine(执行引擎) 子系统; ? 1.1?Class loa...
分类:
其他好文 时间:
2014-09-14 23:48:18
阅读次数:
642
看到OOM的很多文章,然后自己也测试了下。每段程序都写了OOM的原因。从java内存模型开始分析就行了。
估计也不是太难。就是用jconsole监控资源的时候,感觉不太舒服。...
分类:
其他好文 时间:
2014-09-13 18:47:56
阅读次数:
197
在本文描述它们的区别之前,先来了解一下JVM运行时数据区的内存模型。 《深入JAVA虚拟机》书中是这样描述的:JVM运行时数据区的内存模型由五部分组成: 【1】方法区 【2】堆 【3】JAVA栈 【4】PC寄存器 【5】本地...
分类:
其他好文 时间:
2014-09-09 13:54:19
阅读次数:
201
先看一眼JVM虚拟机运行时的内存模型:
1.方法区 Perm(永久代、非堆)
2.虚拟机栈
3.本地方法栈 (Native方法)
4.堆
5.程序计数器
1 首先的问题是:jvm如何知道那些对象需要回收 ?
目前两种标识算法、三种回收算法、两种清除算法、三种收集器
引用计数法
每个对象上都有一个引用计数,对象每被引用一次,引...
分类:
其他好文 时间:
2014-09-07 21:13:05
阅读次数:
363
深入理解Java内存模型(一)——基础并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间...
分类:
编程语言 时间:
2014-09-05 09:56:51
阅读次数:
360
原型内存模型介绍原型是javascript中非常特殊的一个对象,当一个函数创建之后,会随之就产生一个原型对象。当通过这个函数的构造函数创建一个具体的对象之后,在这个具体的对象中就会有一个属性指向原型。第一种状态function Person(){ }function Person(){},Pe...
分类:
编程语言 时间:
2014-09-03 19:43:57
阅读次数:
257
上一节已经了解了java内存模型,JMM为了提高执行性能,引入了工作内存和主存两个概念,在继续讨论之前必须先搞清四种存储介质:寄存器、高级缓存、RAM和ROM。
RAM与ROM大家都比较熟悉了,可以看成是我们经常说的内存与硬盘,寄存器属于处理器里面的一部分,而高级缓存cache是CPU设计者为提高性能引入的一个缓存,也可以说是属于处理器的一部分。在利用CPU进行运算时必定涉及操作数的读取,假如C...
分类:
其他好文 时间:
2014-09-02 21:25:45
阅读次数:
428
并发编程中的两个重要问题:1.线程之间如何通信(共享内存、消息传递);2.线程之间如何同步;在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信;在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通信。同步是指程序用...
分类:
编程语言 时间:
2014-09-01 12:19:43
阅读次数:
194