Java 如何以编程方式清除Windows中的缓存?

Java 如何以编程方式清除Windows中的缓存?,java,windows,caching,Java,Windows,Caching,我读过几篇文章,以及关于如何使用外部应用程序清除缓存的文章 我希望运行性能基准测试,并希望在每次运行之前清除操作文件系统缓存。我正在用Java运行一个有很多参数的程序,我需要一个自动化的方法来实现这一点,即用Java编程 有什么建议吗?您可以使用批处理文件清除缓存并在java中调用该批处理文件 以下是在java中调用批处理文件的命令: 此批处理文件将清除windows中的所有java缓存。只需在java代码中调用此批处理文件即可执行 @Echo Off echo ===============

我读过几篇文章,以及关于如何使用外部应用程序清除缓存的文章

我希望运行性能基准测试,并希望在每次运行之前清除操作文件系统缓存。我正在用Java运行一个有很多参数的程序,我需要一个自动化的方法来实现这一点,即用Java编程


有什么建议吗?

您可以使用批处理文件清除缓存并在java中调用该批处理文件

以下是在java中调用批处理文件的命令:

此批处理文件将清除
windows
中的所有
java缓存。只需在java代码中调用此批处理文件即可执行

@Echo Off

echo =========================

echo Now clearing all users Java cache folder

set "docandset=%homedrive%\users"

     >> c:\Delete.log echo/ "Java\Deployment\cache\6.0\"

for /f "delims=" %%a in ('dir "%docandset%" /ad /b') do (

for %%b in (

"%docandset%\%%a\AppData\LocalLow\Sun\Java\Deployment\cache\6.0"

) do (

echo %%b >> c:\Delete.log

cd /d %%b >> c:\Delete.log  2>&1

rd /s /q %%b >> c:\Delete.log  2>&1

del /f /s /q %%b >> c:\Delete.log  2>&1

)

)

echo =========================

echo COMPLETE!!!! 

echo =========================

echo All users Java cache folder has been cleared.

PAUSE
在这里找到它:


您也可以检查此项,清除windows临时文件:

您可以使用JNA调用
((SIZE\u T)-1,(SIZE\u T)-1,0)
,从而刷新缓存。但我认为这还不够,因为它只是将页面从工作集转换到备用列表,而没有实际清除它们。RAMMap使用未记录的系统调用来清除备用列表,我认为这需要NT 6。有关以下代码段所需声明的更多信息,请参见:
SYSTEM\u MEMORY\u LIST\u COMMAND=MemoryPurgeStandbyList
NtSetSystemInformation(systemmemorylistinfo,&command,sizeof(command))
这需要启用
“SeProfileSingleProcessPrivilege”
,提升的进程需要调用
OpenProcessToken
LookupPrivilegeValue
AdjustTokenPrivileges
。我忘记了调用
SetSystemFileCacheSize
刷新缓存需要启用
“SeIncreaseQuotaPrivilege”
。此注释似乎描述了如何从磁盘中清除Java缓存,但我认为问题在于如何从内存中清除系统文件缓存。
@Echo Off

echo =========================

echo Now clearing all users Java cache folder

set "docandset=%homedrive%\users"

     >> c:\Delete.log echo/ "Java\Deployment\cache\6.0\"

for /f "delims=" %%a in ('dir "%docandset%" /ad /b') do (

for %%b in (

"%docandset%\%%a\AppData\LocalLow\Sun\Java\Deployment\cache\6.0"

) do (

echo %%b >> c:\Delete.log

cd /d %%b >> c:\Delete.log  2>&1

rd /s /q %%b >> c:\Delete.log  2>&1

del /f /s /q %%b >> c:\Delete.log  2>&1

)

)

echo =========================

echo COMPLETE!!!! 

echo =========================

echo All users Java cache folder has been cleared.

PAUSE