也许大家都有过这样的经历,在启动时通过`-Xmx`或者`-XX:MaxPermSize`这样的参数来显式的设置应用的堆(Heap)和永久代(Permgen)的内存大小,但为什么不直接设置JVM所占内存的大小,而要分别去设置不同的区域?JVM所管理的内存被分成多少区域?每个区域有什么作用?如何来管理这些区域?
分类:
其他好文 时间:
2018-03-15 17:58:50
阅读次数:
193
首先我们先来看一个由普通数组构建的普通堆。 然后我们通过前面的方法对它进行堆化(heapify),将其构建为最大堆。 结果是这样的: 对于我们所关心的这个数组而言,数组中的元素位置发生了改变。正是因为这些元素的位置发生了改变,我们才能将其构建为最大堆。 可是由于数组中元素位置的改变,我们将面临着几个 ...
分类:
其他好文 时间:
2018-03-15 17:55:38
阅读次数:
215
关于JS堆栈与拷贝 1、栈(stack)和堆(heap) stack为自动分配的内存空间,它由系统自动释放;而heap则是动态分配的内存,大小不定也不会自动释放。 2、基本类型和引用类型 基本类型:存放在栈内存中的简单数据段,数据大小确定,内存空间大小可以分配。 5种基本数据类型有Undefined ...
分类:
Web程序 时间:
2018-03-14 19:07:16
阅读次数:
270
jmap JVM Memory Map命令用于生成heap dump文件,如果不使用这个命令,还可以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现OOM的时候自动生成dump文件。 jmap不仅能生成dump文件,还可以查询finalize执行队列、Java堆和 ...
分类:
其他好文 时间:
2018-03-14 18:14:03
阅读次数:
219
堆这种数据结构的一种典型应用——优先队列(Priority Queue) 普通队列:先进先出;后进后出。 优先队列:出队顺序和入队顺序无关;和优先级相关。 优先队列最典型的应用就是在计算机的操作系统中执行任务,当操作系统执行多个任务时,操作系统是将cpu的执行周期划成了多个时间片,在每个时间片里只能 ...
分类:
编程语言 时间:
2018-03-14 15:54:50
阅读次数:
238
MySQL官方对索引的定义:索引是帮助MySQL高效获取数据的数据结构。索引是在存储引擎中实现的,所以每种存储引擎中的索引都不一样。如MYISAM和InnoDB存储引擎只支持BTree索引;MEMORY和HEAP储存引擎可以支持HASH和BTREE索引。 这里仅针对常用的InnoDB存储引擎所支持的 ...
分类:
数据库 时间:
2018-03-11 14:43:59
阅读次数:
177
$treap$ (树堆)= $tree$ (树) + $heap$ (堆) 显然,这个名字一定是二叉排序树和堆的结合 事实就是这样 怎么定义? 是一棵二叉树,但并不一定是完全二叉树 按权值形成二叉排序树,即左边比"我"小,右边比"我"大 按随机给的值形成一棵堆,以小根堆为例,即"我"的孩子的随机值小 ...
分类:
其他好文 时间:
2018-03-11 02:49:52
阅读次数:
216
程序中内存从哪里来 三种内存来源:栈(stack)、堆(heap)、数据区(.date); 栈(stack) 运行自动分配、自动回收,不需要程序员手工干预; 栈内存可以反复使用; 栈反复使用后,程序不会清理栈,因此,栈是脏的,使用时可能分配到原来保留的值; 函数不能返回栈变量的指针,因为这个空间是临 ...
分类:
编程语言 时间:
2018-03-10 01:24:44
阅读次数:
184
一般来说,使用new申请空间时,是从系统的“堆”(heap)中分配空间。申请所得的空间的位置时根据当时的内存的实际使用情况决定的。但是,在某些特殊情况下,可能需要在程序员指定的特定内存创建对象,这就是所谓的“定位放置new”(placement new)操作。 定位放置new操作的语法形式不同于普通 ...
分类:
编程语言 时间:
2018-03-09 14:11:57
阅读次数:
196