提升不高,不过好处是可以多次申请小对象,一次释放.(只适应于无动态申请资源的class) vs2012测试情况如下: // CHchFixLenMemPool.h #pragma once #ifndef __CHchFixLenMemPool_H__ #define __CHchFixLenMemPool_H__ #include <exception> #include <new> typedef struct __HchFixLenMemPoolLinkNode { __Hc…
1.ExecutorService: 是一个接口,继承了Executor: public interface ExecutorService extends Executor { } 2.Executor: 而Executor亦是一个接口,该接口只包含了一个方法: void execute(Runnable command); 3.Executors: 该类是一个辅助类,此包中所定义的 Executor.ExecutorService.ScheduledExecutorService.Threa…
1.固定内存池管理实验 内存管理是操作系统的一个基础功能.uTenux的内存池管理函数提供了基于软件的内存池管理和内存块分配管理.uTenux的内存池有固定大小的内存池和大小可变的内存池之分,它们被看成是互相独立的对象,需要不同的系统调用集来进行操作. 内存池管理函数管理的内存全部包含在系统空间以内. 1.固定尺寸内存池实验 固定尺寸内存池是一个用来动态管理固定尺寸内存块的对象.每个固定尺寸内存池都有一个用作固定尺寸内存池的内存空间(简称为内存池区)和一个等待内存块分配的任务队列. uTenux…
前言 为什么要从对象池开始呢,先从一个网络IO操作的demo说起 比如下面这段代码,显而易见已经在代码中使用了一个固定大小的线程池,所以现在的重点在实现Runnble接口的匿名对象上,这个对象每次创建线程都要重复创建. 假设有个提供http服务的程序,每天要处理几万,上百万等等的用户请求,那么我们的程序岂不是每次请求都会创建一次Runnble的实现对象?这种大量重复创建同一个对象显然会造成大量的内存资源浪费(如果再增加GC的要回收他们所需要消耗的系统资源,显然耗费的资源只会比表面看起来更多) /…
基本结构 1. ngx_pool_t struct ngx_pool_s { ngx_pool_data_t d; size_t max; ngx_pool_t *current; ngx_chain_t *chain; ngx_pool_large_t *large; ngx_pool_cleanup_t *cleanup; ngx_log_t *log; }; 提供的函数 1. ngx_create_pool(): 分配并初始化一块 size 大小的内存池 ngx_pool_t *ngx_c…
JDK文档说明: 创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程.在任意点,在大多数 nThreads 线程会处于处理任务的活动状态.如果在所有线程处于活动状态时提交附加任务,则在有可用线程之前,附加任务将在队列中等待.如果在关闭前的执行期间由于失败而导致任何线程终止,那么一个新线程将代替它执行后续的任务(如果需要).在某个线程被显式地关闭之前,池中的线程将一直存在. 创建方法: java.util.concurrent.Executors.newFixedThreadPo…
1.新建硬盘 点击确定,就创建好了一个固定大小的vhd文件,下面我们开始创建虚拟机. 2.创建虚拟机 输入虚拟机名称 选择第一代虚拟机 我这里给虚拟机分配512MB内存 网络配置 在这之前我们已经创建好了一个固定大小的vhd文件,所以这里选择“使用现有虚拟硬盘” 点击完成按钮 到此我们的虚拟机创建完毕. 3.给Hyper-V虚拟机安装操作系统 连接创建好的虚拟机 连接成功后弹出如下图,点击媒体——>DVD驱动器——>插入磁盘,选择操作系统iso文件 选择好iso镜像文件如下图 点击“启动”按钮…
php大力力 [042节] 今天做了一个删除功能 if(isset($_GET['action'])){ if($_GET['action']=="del"){ $sql = "delete from tbl_media where MadiaName = '{$_GET['MadiaName']}'"; $result = mysql_query($sql); if($result && mysql_affected_rows()>0){ e…
最近nginx的源码刚好研究到内存池,这儿就看下nginx内存池的相关的东西. 一,为什么要使用内存池 大多数的解释不外乎提升程序的处理性能及减小内存中的碎片,对于性能优化这点主要体现在: (1)系统的malloc/free等内存申请函数涉及到较多的处理,如申请时合适空间的查找,释放时的空间合并. (2)默认的内存管理函数还会考虑多线程的应用,加锁操作会增加开销. (3)每次申请内存的系统态与用户态的切换也及为的消耗性能. 对于由于应用的频繁的在堆上分配及释放空间所带来的内存碎片化,其实主流的思…
[转载自IBM]讲的很好~推荐看看 6.1 自定义内存池性能优化的原理 如前所述,读者已经了解到"堆"和"栈"的区别.而在编程实践中,不可避免地要大量用到堆上的内存.例如在程序中维护一个链表的数据结构时,每次新增或者删除一个链表的节点,都需要从内存堆上分配或者释放一定的内存:在维护一个动态数组时,如果动态数组的大小不能满足程序需要时,也要在内存堆上分配新的内存空间. 6.1.1 默认内存管理函数的不足 利用默认的内存管理函数new/delete或malloc/fre…