为了提高查询速度,Mysql会维护一个内存区域(官方文档指出,大小至少41984B)对查询结果进行缓存,当查询时发现缓存区里有数据则直接返回结果而不用去执行sql语句。查询命中的条件 每个缓存查询至少需要两个块(一个块用于查询文本,一个或多个块用于查询结果)。并且,每一个查询使用的每个表需要一...
分类:
数据库 时间:
2015-07-28 12:38:37
阅读次数:
165
一、概述 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干不同的数据区域,这些区域都有各自的用途以及创建和销毁的时间。Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如下图所示: 下面就每一个区域进行阐述。二、运行时数据区域程序计数器 程序计数器,可以看做是当...
分类:
编程语言 时间:
2015-07-27 18:23:08
阅读次数:
111
我把Java的内存区域画了一张思维导图,以及各区域的主要功能。
模拟Java堆溢出
Java堆用于存储对象实例,只要不断地创建对象并且保证GC ROOTS到对象之间有可达路径避免被回收机制清除,就可以模拟出Java堆溢出。
package hxl.insist.jvm;
import java.util.ArrayList;
import java.util.List;
/*...
分类:
编程语言 时间:
2015-07-24 20:57:45
阅读次数:
162
注意,这里所说的堆区和栈区指的是(虚拟)内存区域,跟数据结构中的堆栈不一样。栈区和堆区概念 栈区(stack)—— 由编译器自动分配释放,存放局部变量的值、函数调用所需要维护的信息等。 栈区必须满足这样一条规则:先入栈的数据后出栈(First In Last Out, FILO)。 堆区(h...
分类:
其他好文 时间:
2015-07-23 21:47:13
阅读次数:
111
一:Java技术体系模块图二:JVM内存区域模型1.方法区也称"永久代” 、“非堆”, 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小。运行时常...
分类:
编程语言 时间:
2015-07-23 17:34:53
阅读次数:
139
Java虚拟机学习 - 对象访问分类: JVM2012-09-26 19:36 9280人阅读 评论(17) 收藏 举报对象访问会涉及到Java栈、Java堆、方法区这三个内存区域。如下面这句代码:[java] view plaincopyprint?Object objectRef = new O...
分类:
编程语言 时间:
2015-07-23 17:34:41
阅读次数:
151
内存有五大区域从高地址到低地址分别为:栈、堆、BBS段、数据段、代码段提示:栈和堆是运行时分配,BBS段、数据段、代码段是编译器分配BBS段:通常是指用来存放程序中未初始化的全局变量和静态变量数据段:通常是指用来存放程序中已经初始化的全局变量和静态变量、字符串常量等代码段:通常是指用来存放程序执行代码的一块内存区域堆:是用于存放进程运行中被动态分配的内存段(调用malloc函数,新分配的内存动态添加...
分类:
移动开发 时间:
2015-07-23 11:58:24
阅读次数:
179
使用过STL的人都应该知道关于迭代器失效的原理,这里以后vector迭代器失效为例:第一种:当插入一个元素到vector中,如果插入后容器已满,那么容器将新开辟一块内存区域,然后将原内存中的数据拷贝到新的内存区域,同时释放旧的内存。这样之前指向旧内存的迭代器就会指向不确定内存,这块内存要么释放,要么...
分类:
其他好文 时间:
2015-07-22 18:24:32
阅读次数:
99
数据库 - 数据文件实例 - 内存结构一个实例由系统全局内存区域(SGA)以及一系列后台进程组成每个连接到数据库的用户都通过一个客户端进程来进行管理。客户端进程是与服务端进程相联结的,每个服务器进程都会被分配一块私有的内存区域,称为进程共享内存区域(PGA)SGA - 共享池 共享池是缓存程序数据的...
分类:
数据库 时间:
2015-07-21 18:33:05
阅读次数:
169
一、内存的使用1.1 你创建的内存区域可能是脏的 当我们创建一个内存区域的时候,内存中的数据可能是乱七八糟的(可能是其他代码用过后遗留的数据),如下面一段代码:int main(int argc, char *argv[]){ // 下面申请的20个字节的内存有可能被别人用过 char...
分类:
其他好文 时间:
2015-07-21 06:42:12
阅读次数:
161