精易论坛
标题:
让你的E程序占用内存更少 ( 减小任务器里面的占用内存)
[打印本页]
作者:
拜佛成魔
时间:
2011-6-4 17:45
标题:
让你的E程序占用内存更少 ( 减小任务器里面的占用内存)
本帖最后由 宇智波·佐助 于 2013-2-7 12:09 编辑
让你的E程序占用内存更少 减小任务器里面的占用内存 !!
2.jpg
(25.96 KB, 下载次数: 14)
下载附件
2011-6-4 17:43 上传
作者:
う网淅乄
时间:
2011-6-4 17:48
这个问题正需要
作者:
う网淅乄
时间:
2011-6-4 17:49
额 ............... 要钱......................
作者:
a7615432
时间:
2011-6-4 17:50
来看下是什么
作者:
mxd001
时间:
2011-6-4 17:50
支持开源~~~~~~
作者:
1072178896
时间:
2011-6-4 17:51
定额了啊 看看吧
作者:
375734602
时间:
2011-6-4 17:51
怎样减少的?
作者:
mxd001
时间:
2011-6-4 17:51
测试出了325KB,还不错!
作者:
Xiao伍
时间:
2011-6-4 17:51
不懂,具体是什么意思呢???
作者:
窦泽平
时间:
2011-6-4 17:52
学习一下啊- -
作者:
askjhgka
时间:
2011-6-4 17:56
一套PHP网络验证源码
作者:
笨潴
时间:
2011-6-4 18:00
{:3_236:}加个内存优化不就行了么
作者:
akeyyz
时间:
2011-6-4 18:02
开源的就看看吧
作者:
吾爱编程
时间:
2011-6-4 18:04
什么东西啊?
作者:
finemi
时间:
2011-6-4 18:06
难道是自慰骗人的。。
作者:
wenda0493
时间:
2011-6-4 18:11
我看看是什么东西啊
作者:
千年眷恋
时间:
2011-6-4 18:23
{:3_234:}真的?
作者:
hs11
时间:
2011-6-4 18:25
支持开源~~~~~~
作者:
Zero龙少
时间:
2011-6-4 18:27
神马软件这么爽?
作者:
是要不要骑牛您
时间:
2011-6-4 18:31
学习学习。。。
作者:
aa295593362
时间:
2011-6-4 18:42
提示:
作者被禁止或删除 内容自动屏蔽
作者:
是要不要骑牛您
时间:
2011-6-4 18:47
EmptyWorkingSet和内存整理
2008-07-14 17:52
网络上找了很多关于内存整理的文章,不外乎都是使用EmptyWorkingSet来实现。就如下面这段代码。
#include "stdafx.h"
#include <windows.h>
#include <tlhelp32.h>
#include <psapi.h>
#pragma comment (lib,"psapi.lib")
BOOL EmptyAllSet()
{
HANDLE SnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(SnapShot==NULL)
{
return FALSE;
}
PROCESSENTRY32 ProcessInfo;//声明进程信息变量
ProcessInfo.dwSize=sizeof(ProcessInfo);//设置ProcessInfo的大小
//返回系统中第一个进程的信息
BOOL Status=Process32First(SnapShot, &ProcessInfo);
while(Status)
{
HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,TRUE,ProcessInfo.th32ProcessID);
if(hProcess)
{
SetProcessWorkingSetSize(hProcess,-1,-1);
//内存整理
EmptyWorkingSet(hProcess);
CloseHandle(hProcess);
}
//获取下一个进程的信息
Status=Process32Next(SnapShot,&ProcessInfo);
}
return TRUE;
}
int main(int argc, char* argv[])
{
EmptyAllSet();
return 0;
}
但在实际使用上,只能清理当前帐户启动的进程。其他进程,如SYSTEM帐户启动的程序,都是无法清理。这是因为权限的关系。这个时候只要加一段提升权限的代码即可。
void AdjustTokenPrivilegesForNT()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// Get a token for this process.
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
// Get the LUID for the EmptyWorkingSet privilege.
LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the EmptyWorkingSet privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
}
然后在main的EmptyAllSet();调用之前加入AdjustTokenPrivilegesForNT();即可。这段代码与关机所用的那段很相似,有什么区别的话比较一下就知道了。
另外,很多文章说外面很多内存整理的工具不过如此,我觉得是很不负责任的。如果是使用EmptyWorkingSet实现的话当然是没什么技术含量,但是只要比较一下实现过程就会知道,很多好的内存整理工具的实现方法肯定不是这样的。运行上面这段代码耗时极短,硬盘几乎不进行读写。但是其他的整理工具往往会进行大量的硬盘读写,将内存数据转存到硬盘的分页文件里以达到整理内存的目的。孰优孰劣我不敢说,但是相对来说我还是觉得用EmptyWorkingSet实现来的快一点。
目前为止我还没有发现EmptyWorkingSet执行后会产生什么问题,如果有高人知道这个函数的缺点的话,望不吝赐教。谢谢。
作者:
是要不要骑牛您
时间:
2011-6-4 18:48
EmptyWorkingSet和内存整理
2008-07-14 17:52
网络上找了很多关于内存整理的文章,不外乎都是使用EmptyWorkingSet来实现。就如下面这段代码。
#include "stdafx.h"
#include <windows.h>
#include <tlhelp32.h>
#include <psapi.h>
#pragma comment (lib,"psapi.lib")
BOOL EmptyAllSet()
{
HANDLE SnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(SnapShot==NULL)
{
return FALSE;
}
PROCESSENTRY32 ProcessInfo;//声明进程信息变量
ProcessInfo.dwSize=sizeof(ProcessInfo);//设置ProcessInfo的大小
//返回系统中第一个进程的信息
BOOL Status=Process32First(SnapShot, &ProcessInfo);
while(Status)
{
HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,TRUE,ProcessInfo.th32ProcessID);
if(hProcess)
{
SetProcessWorkingSetSize(hProcess,-1,-1);
//内存整理
EmptyWorkingSet(hProcess);
CloseHandle(hProcess);
}
//获取下一个进程的信息
Status=Process32Next(SnapShot,&ProcessInfo);
}
return TRUE;
}
int main(int argc, char* argv[])
{
EmptyAllSet();
return 0;
}
但在实际使用上,只能清理当前帐户启动的进程。其他进程,如SYSTEM帐户启动的程序,都是无法清理。这是因为权限的关系。这个时候只要加一段提升权限的代码即可。
void AdjustTokenPrivilegesForNT()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// Get a token for this process.
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
// Get the LUID for the EmptyWorkingSet privilege.
LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the EmptyWorkingSet privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
}
然后在main的EmptyAllSet();调用之前加入AdjustTokenPrivilegesForNT();即可。这段代码与关机所用的那段很相似,有什么区别的话比较一下就知道了。
另外,很多文章说外面很多内存整理的工具不过如此,我觉得是很不负责任的。如果是使用EmptyWorkingSet实现的话当然是没什么技术含量,但是只要比较一下实现过程就会知道,很多好的内存整理工具的实现方法肯定不是这样的。运行上面这段代码耗时极短,硬盘几乎不进行读写。但是其他的整理工具往往会进行大量的硬盘读写,将内存数据转存到硬盘的分页文件里以达到整理内存的目的。孰优孰劣我不敢说,但是相对来说我还是觉得用EmptyWorkingSet实现来的快一点。
目前为止我还没有发现EmptyWorkingSet执行后会产生什么问题,如果有高人知道这个函数的缺点的话,望不吝赐教。谢谢。
作者:
弎巳◎
时间:
2011-6-4 19:06
什么呀,,瞅瞅
作者:
hack0215
时间:
2011-6-4 19:15
这个问题正需要{:3_245:}
作者:
cyzswhaha
时间:
2011-6-4 19:28
顶顶。··· 喜欢喜欢。 学习学习
作者:
cqjian
时间:
2011-6-4 20:56
看看是什么 呵呵
作者:
l凌蓝雪
时间:
2011-6-4 22:01
哇 太强悍了谢谢楼主分享
作者:
qdjfkj
时间:
2011-6-4 22:11
这个问题正需要{:3_227:}
作者:
liyuan2499
时间:
2011-6-4 22:39
谢LZ 源码不错
作者:
我是耿耿
时间:
2011-6-5 00:26
支持楼主支持一下……说下是什么原理
作者:
lsla
时间:
2011-6-5 00:35
让你的E程序占用内存更少 减小任务器里面的占用内存 !! 怎么实现?
作者:
水特罗海姆
时间:
2011-6-5 00:36
这个有讲究 .
作者:
爬上墙头等红杏
时间:
2011-6-5 00:55
看看
学习下
顶下
作者:
醉过知酒浓
时间:
2011-6-5 00:57
嘿嘿,我正好需要这个呢
作者:
qq793359277
时间:
2011-6-5 04:27
看看再说{:3_228:}
作者:
1002271001
时间:
2011-6-5 09:37
支持开源..
作者:
wkxq
时间:
2011-6-5 10:09
有技术能量哟
作者:
864647046
时间:
2011-6-5 10:09
看看怎么个方法
作者:
694900566
时间:
2011-6-5 10:36
{:3_241:}顶一下咯
作者:
29636595
时间:
2011-6-5 10:44
支持开源{:3_231:}
作者:
q1051278389
时间:
2011-6-5 10:46
什么办法啊?
作者:
webshell
时间:
2011-6-5 10:46
来看一下...
作者:
xiaohan
时间:
2011-6-5 11:12
支持一下!
作者:
kunzaiai
时间:
2011-6-5 11:17
神马代码啊 看到这个 我想起了一本小说 枪王···
作者:
scivoelx
时间:
2011-6-5 11:20
让你的E程序占用内存更少 减小任务器里面的占用内存 !!
作者:
biooly
时间:
2011-6-5 11:31
应该就是好东西了,加油,做出更好的东西来。
作者:
5101798
时间:
2011-6-5 11:33
内存欺骗是什么东西
作者:
忘記
时间:
2011-6-5 11:35
支持 支持 支持
作者:
owen800q
时间:
2011-6-5 12:09
发达收复失地饭似懂非懂是
作者:
a455611605
时间:
2011-6-5 12:49
谢谢楼主分享
作者:
a51322
时间:
2011-6-5 12:54
{:3_244:}这个很好
作者:
风云思星
时间:
2011-6-5 13:05
{:3_244:}我是穷人!
作者:
keyway
时间:
2011-6-5 13:09
看看了..............................
作者:
45456465
时间:
2011-6-5 15:19
{:3_233:}用的什么原理啊
作者:
asd2233925
时间:
2011-6-5 15:53
什么意思啊??
作者:
zhy854185073
时间:
2011-6-5 15:57
{:3_244:}{:3_244:}厉害啊!
作者:
是大哥吖
时间:
2011-6-5 17:13
wa 好厉害啊
作者:
在在
时间:
2011-6-5 17:22
看看具体的
作者:
Das0n
时间:
2011-6-5 17:46
我也要这样!
作者:
若相爱
时间:
2011-6-5 18:08
提示:
作者被禁止或删除 内容自动屏蔽
作者:
850589345
时间:
2011-6-5 18:13
谢谢楼主了
作者:
a489284224
时间:
2011-6-5 18:15
什么东西啊
作者:
陆宁
时间:
2011-6-5 18:22
kankan这个什么东西啊
作者:
啊颠
时间:
2011-6-5 18:32
什么东西??
作者:
咦一语言
时间:
2011-6-5 18:40
E语言很占内存吗?我不觉得呀!~{:3_234:}
作者:
492129430
时间:
2011-6-5 18:50
好好学习一下
作者:
辉の不去
时间:
2011-6-5 20:55
{:3_226:}回。。。。。。。。。。。。。
作者:
|﹎℡若即
时间:
2011-6-5 20:59
学习一下啊{:3_244:}
作者:
1245663822
时间:
2011-6-5 21:55
好东西啊
作者:
sbbj7788
时间:
2011-6-5 22:17
看看呀有什么用?
作者:
hhjj3388
时间:
2011-6-5 23:34
看看什么原理·!!
作者:
孤★泪痕
时间:
2011-6-5 23:43
让你的E程序占用内存更少 减小任务器里面的占用内存 !!
作者:
小薪
时间:
2011-6-5 23:48
支持楼主!!!
作者:
Mr.Yang
时间:
2011-6-6 00:23
必定顶起啊
作者:
hxk9608
时间:
2011-6-6 01:21
学习学习{:3_244:}
作者:
圣人模式
时间:
2011-6-6 02:24
这是好东西
作者:
精易⌒小傷
时间:
2011-6-6 22:53
哇咔咔.听说很牛叉
作者:
xiongshuai
时间:
2011-6-7 13:02
这个问题早就该解决了。。
作者:
堕落蒽尕黧鸭
时间:
2011-6-7 13:32
实际减少吗!!!?
作者:
堕落蒽尕黧鸭
时间:
2011-6-7 13:33
貌似有点贵哦~~
作者:
8100110
时间:
2011-6-7 15:31
看看 什么东西
作者:
leex04
时间:
2011-6-7 18:05
哇咔咔, 弄能挺全的。
作者:
q402300320
时间:
2011-6-7 21:24
来看下是什么
作者:
594316795
时间:
2011-6-8 18:08
看看 ~~~~谢谢分享
作者:
andyaibing52
时间:
2011-6-10 12:43
学习一下。。哈哈
作者:
szk820628
时间:
2011-6-10 13:45
谢谢楼主了。这个很粗补充哦哦
作者:
maijia321
时间:
2011-6-10 18:07
顶个啊。需要啊
作者:
小冰
时间:
2011-6-10 21:42
,,要精吗? 坚决不给
作者:
lsnanr
时间:
2011-6-10 22:13
不知道 是什么
作者:
361°獨家記憶
时间:
2011-6-11 01:41
这个要怎么做啊 这个要学习了啊
作者:
av19881023
时间:
2011-6-11 10:35
看看
·············
作者:
hackrzc
时间:
2011-6-11 18:25
拿下 很好1!!
作者:
qqwasd
时间:
2011-6-11 19:23
搞错了。评分到沙发了 -
作者:
繁华尘世
时间:
2011-6-11 19:27
怎么弄啊?
作者:
大叔来的
时间:
2011-6-11 19:35
看看、、拿下
作者:
中文易语言
时间:
2011-6-11 23:01
易语言就是占用内存多!
作者:
roach
时间:
2011-6-11 23:45
{:3_226:}来看看是什么
作者:
jlzai
时间:
2011-6-12 01:01
下载学习下
作者:
qq741348872
时间:
2011-6-12 03:10
看一下~~~~~
欢迎光临 精易论坛 (https://125.confly.eu.org/)
Powered by Discuz! X3.4