new 和 delete 是 C++ 用于管理 堆内存 的两个运算符,对应于 C 语言中的 malloc 和 free,但是 malloc 和 free 是函数,new 和 delete 是运算符。除此之外, new 在申请内存的同时,还会调用对象的构造函数,而 malloc 只会申请内存; del ...
分类:
编程语言 时间:
2018-06-13 00:58:24
阅读次数:
126
malloc()函数在堆上分配参数size字节大小的内存,并返回指向新分配内存起始位置处的指针,其所分配的内存未经初始化。 free()函数释放ptr参数所指向的内存块,该参数应该是之前由malloc(),或者其他堆内存分配函数之一所返回的地址。 malloc和free的实现: malloc:首先会 ...
分类:
其他好文 时间:
2018-06-10 15:09:43
阅读次数:
125
堆参数调优 1、堆的结构 JAVA7 堆逻辑上分为:新生区、养老区、永久区;实际上堆只有新生区、养老区; Minor GC:轻量的垃圾回收; Major GC(Full GC):重量级垃圾回收。 Java8 没有永久区了,被元空间取代; 2、堆内存调优 -Xms:设置初始分配大小,默认为物理内存的 ...
分类:
其他好文 时间:
2018-06-09 15:29:18
阅读次数:
176
垃圾收集器和内存分配 程序计数器、虚拟机栈、本地方法栈这三个区域和线程的生命周期一致,所以方法结束或者线程结束时,内存自然就跟着回收了。Java堆和方法区,只有在程序处于运行期间才能知道会创建哪些对象,即这部分的内存分配和回收都是动态的, 垃圾回收主要关注的是堆内存 。 对象存活判断 在进行垃圾回收 ...
分类:
其他好文 时间:
2018-06-09 15:29:01
阅读次数:
169
一、什么是堆?(Heap) 堆是无序的,是一片不连续的内存域,由用户自己来控制和释放,如果用户自己不释放的话,当内存达到一定的特定值时,通过垃圾回收器(GC)来回收。 是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小。 二、什么是栈?(Stack) 栈是有顺序的,是 ...
一个JVM实例只存在一个堆内存,堆内存的大小是可以调节的。类加载器读取了类文件后,需要把类、方法、常变量放到堆内存中,保存所有引用类型的真实信息,以方便执行器执行,堆内存分为三部分: Young Generation Space新生区Young Tenure generation space养老区O ...
分类:
其他好文 时间:
2018-06-06 18:22:23
阅读次数:
156
一、堆内存与栈内存 堆和栈都是内存中划分出来的用来存储的区域,栈为自动分配的内存空间,它由系统自动释放,堆为动态分配的内存,大小不定也不会自动释放。 二、js基本数据类型与引用类型的不同 基本数据类型(boolean,undefined,null,string,number) 1.基本数据类型存放在 ...
分类:
Web程序 时间:
2018-06-05 21:06:05
阅读次数:
247
通常,向方法中传递的都是基本数据类型,而向方法中传递数组时,就需要考虑内存的分配 向方法之中传递数组,或者将一个数组的值传给另一个数组,都会产生新的栈内存。引用之中对数组的改变会影响到原数组(其实就是在原数组的堆内存上操作)。当引用操作完成之后,引用产生的占内存不再只想原数组的堆内存。 ...
分类:
编程语言 时间:
2018-06-02 11:16:52
阅读次数:
215
最近遇到一个坑爹的接口需求 其需求简单讲,就是要我传递一个头结构体USERCERTTABLE,一个用户(USER)结构体数组,一个证书(CERT)结构体数组…… 讲道理,这样写就好了嘛Write_User_Cert(struct* head p1,struct* user p2. struct* c ...
分类:
其他好文 时间:
2018-05-31 21:58:32
阅读次数:
164
JVM在晚期(运行期)优化时,使用到一种技术 逃逸分析。 补充说明:逃逸分析在1999年就已提出,但是JDK1.6才实现逃逸分析。而且,这项优化目前仍不成熟,仍有很大改进余地。 这是大坑啊,目前在HotSpot中未实现,那创建的对象还是都放在堆内存中,这个文章记录的内容是不是就没什么用了(😭) ...
分类:
编程语言 时间:
2018-05-30 19:27:12
阅读次数:
190