一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。 ...
分类:
其他好文 时间:
2017-03-31 23:11:29
阅读次数:
187
1 #include 2 using namespace std; 3 int heap[101]; 4 int heap_size; 5 void put(int d) //heap[1]为堆顶 插入 6 { 7 int now, next; 8 heap[++heap_size] = d; 9 ... ...
分类:
编程语言 时间:
2017-03-31 15:50:54
阅读次数:
242
系统给程序的地址数是 4G, 为什么不是 3G 或 5G? 因为 32 位的指针的最大值就是 $FFFFFFFF, 它不能表示更多了, 究其根源这要回到 CPU 的寻址能力、地址总线等等.在 Win64 下, 系统给程序的地址数达到了 16EB(0 - $FFFFFFFFFFFFFFFF), 也就是 ...
分类:
其他好文 时间:
2017-03-31 10:23:47
阅读次数:
130
堆内存设置 原理 JVM堆内存分为2块:Permanent Space 和 Heap Space。 Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。 Heap = { Old + NEW = {Ed ...
分类:
其他好文 时间:
2017-03-30 23:23:12
阅读次数:
247
1、对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。 通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。 2、可以。程序员可以 ...
分类:
编程语言 时间:
2017-03-29 21:02:36
阅读次数:
161
1、谈谈堆和栈的区别? 栈(Stack)由编译器分配释放,存放函数的参数值、局部变量值等,操作方式同数据结构中的栈(先进后出)。 堆(Heap)一般由程序员分配,若程序员不释放,程序结束后由os回收,它和数据结构中的堆是两回事,分配方式确和链表类似。 数据结构中的堆采用的是数组对象而不是链表,可视为 ...
分类:
移动开发 时间:
2017-03-28 15:51:05
阅读次数:
162
源地址:http://seanhe.iteye.com/blog/898277 一、准备工作 分析较大的dump文件(根据我自己的经验2G以上的dump文件就需要使用以下介绍的方法,不然mat会出现oom)需要调整虚拟机参数 找个64位的系统在MemoryAnalyzer.ini设置-Xmx2g 如 ...
分类:
系统相关 时间:
2017-03-28 10:13:26
阅读次数:
166
一、Tomcat的JVM提示内存溢出 查看%TOMCAT_HOME%\logs文件夹下,日志文件是否有内存溢出错误 二、修改Tomcat的JVM 1、错误提示:java.lang.OutOfMemoryError: Java heap space Tomcat默认可以使用的内存为128MB,在较大型 ...
分类:
其他好文 时间:
2017-03-28 00:20:26
阅读次数:
165