可以这样,先把下面的批处理存为myprocessmonitorbat
@echo off
@set prc_name=cmdexe
@echo ---------------%date% %time%----------------- >> prc_monlog
@for /f "tokens=5,6 delims= " %%i in ('tasklist ^|find "%prc_name%"') do @echo %prc_name% use memory %%i%%j>> prc_monlog
@echo -------------------------------------------------- >> prc_monlog
@echo >>prc_monlog
把这个文件放在您指定的一个文件夹里,每次运行都会向prc_monlog中生成一条记录。
然后再把该批处理添加到计划任务中,设置您需要的时间间隔即可。
也可以用批处理自己写定时器,但不建议,特别是长期执行的任务,一来不稳定,二来占资源。
File root = EnvironmentgetRootDirectory();
StatFs sf = new StatFs(rootgetPath());
long blockSize = sfgetBlockSize();
long blockCount = sfgetBlockCount();
long availCount = sfgetAvailableBlocks();
Logd("TAG", "block大小:" + blockSize + ",block数目:" + blockCount + ",总大小:"+ blockSize blockCount / (1024 1024) + "MB");
Logd("TAG","可用的block数目::" + availCount + ",可用大小:" + availCount blockSize / (1024 1024)+ "MB");
getTotalPrivateDirty()就是获得自己进程所独占的内存
getTotalPss()意思就是假如有A,B,C,D,E 5个进程共享一片10kb的内存,A,B,F 3个进程又另外共享了30kb的内存,那么进程A调用这个函数返回就是10/5+30/3=12
所以理论上只要监视getTotalPrivateDirty()就能监视自己进程的内存变化
最后附上代码
public void getThisProcessMemeryInfo() {
int pid = AndroidosProcessmyPid();
androidosDebugMemoryInfo[] memoryInfoArray = activityManagergetProcessMemoryInfo(new int[] {pid});
Logd(TAG, "本应用当前使用了" + (float)memoryInfoArray[0]getTotalPrivateDirty() / 1024 + "mb的内存");
}
代码如下:
文件已经上传
@echo off&Setlocal EnableDelayedExpansion
:start
cls
echo 请输入进程名,如 notepadexe
echo 直接回车查看 explorerexe
set /p use=
if "%use%"=="" set use=explorerexe
for /f "skip=2 tokens=2 delims==" %%i in (
'wmic process where "name='%use%'" get KernelModeTime^,UserModeTime /value'
) do (
set "x=!x! %%i"
)
call :Div %x% 5
>nul pause&exit /b
:Div
::不支持超大数和浮点
Setlocal EnableDelayedExpansion
set "dnd=%~1"&set "dsr=%~2"&set "dec=%~3"
if %dsr% equ 0 echo 除数不能是0!&goto :EOF
set/a x=%dnd%/%dsr%
if %x% equ 0 (
if %dnd% lss 0 (if %dsr% gtr 0 set "x=-0") else if %dsr% lss 0 set "x=-0"
)
if not defined dec set "dec=8"
if %dec% equ 0 echo %x%&goto :EOF
for /l %%i in (1 1 %dec%) do (
set/a dnd=^(a=!dnd!%%%dsr%^)10,b=dnd/%dsr%
set "y=!y!!b!"
)
echo CPU使用率:%x%%y:-=%%%
Endlocal
goto :EOF
怎么说读取进程的所有内存数据呢,读到了也是一大堆你的变量都不一定能装下用这个函数:readprocessmemory,指定内存的地址从而读取该地址处的内容,具体使用方法可以参考下MSDN或百度百科
以上就是关于请教大神:批处理,定时获取某进程内存全部的内容,包括:请教大神:批处理,定时获取某进程内存、android怎么获取当前应用程序所占用的内存空间、获取应用程序占用了多少内存 android.os.Debug.MemoryInfo等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)