清除Java缓存

时间:2014-09-12 11:17:31

标签: java caching

我想知道如何使用Java Code或CMD Line代码清除Java Cache。

这应该在Windows 7以上的任何地方的Microsoft Windows机器上完成。

这应该在多台计算机上完成,因此文件路径会有所不同。

该应用程序使用Javaw作为它启动时的默认应用程序(不要与Javaws或Webstart混淆 - 我已经有代码如何清除Javaws缓存)。所以我需要知道如何清除Javaw缓存。

4 个答案:

答案 0 :(得分:0)

您可以使用Java Control Panel

How do I clear the Java cache?

How can do it in command line?

这将是清除缓存的命令

javaws -clearcache // Remove all non-installed applications from the cache.

javaws -uninstall // Remove all applications from the cache.

答案 1 :(得分:0)

这可以通过以下行归档:javaws -Xclearcache -silent -Xnosplash

答案 2 :(得分:0)

我的理解是有三种主流的Java缓存技术:

  1. Application Cache是​​Java Webstart和相关浏览器插件的一部分。这可以使用javaws命令行工具或Java控制面板进行控制,如@ RuchiraGayanRanaweera的回答中所述。

    AFAIK,javaws唯一支持的从命令行控制应用程序缓存的方法。

  2. Java Object Cache框架是Oracle J2EE容器产品线(又名OC4J)的一部分。 OC4J文档中描述了这一点:"Chapter 9 - Java Object Cache"。 (我认为这不是你要找的。)

  3. 某些JVM实现具有允许编译类被不同JVM缓存和共享或重用的功能。 IBM Java和Eclipse OpenJ9支持这一点;例如见"Shared class cache"

    但是,这不是标准(免费)Oracle或OpenJDK Java支持的功能。在Java 5中引入的共享系统类数据显然是一个模糊的JVM功能,并且存在一个商业功能(从Java 8开始)将其扩展到应用程序类。细节很难找到......

  4. 更新 - 从Java 10开始,Oracle和OpenJDK JVM现在支持"Class Data Sharing"(CDS)。本文档提供了有关如何从命令行重新生成缓存的说明。

    考虑到最初提出问题的上下文,我怀疑OP是实际询问Java Webstart应用程序缓存,但没有意识到这个功能是Java的一部分Webstart而不是Java SE作为一个整体。

答案 3 :(得分:0)

创建一个名为clearCache.bat的批处理文件。

@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

现在从命令提示符(cmd)运行批处理文件

Runtime.getRuntime().exec("cmd /c start clearCache.bat");

它会在清除缓存后向您显示警报。