清除Java缓存

6
我想知道如何使用Java代码或CMD行代码清除Java缓存。这应该在任何从Windows 7及以上的Microsoft Windows计算机上完成。由于要在多台计算机上进行,因此文件路径将不同。该应用程序使用Javaw作为其默认启动应用程序(与Javaws或Webstart不要混淆 - 我已经有了清除Javaws缓存的代码)。因此,我需要知道如何清除Javaw缓存。
4个回答

3

1
@Andremoniy 我也添加了那部分。 - Ruchira Gayan Ranaweera
谢谢,但是正如我所提到的,我不需要为Javaws做这件事,而是需要为Javaw做。 - user2138639
@user2138639 javaw?你确定没有叫做cache的东西吗? - Ruchira Gayan Ranaweera
@Ruchira Gayan Ranaweera 你是什么意思? - user2138639

0
可以通过以下命令行实现:javaws -Xclearcache -silent -Xnosplash


0

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

  1. Java Webstart和相关的浏览器插件中有应用程序缓存。可以使用javaws命令行工具或Java控制面板来控制它,如@RuchiraGayanRanaweera的答案所述。

    据我所知,javaws是唯一支持从命令行控制应用程序缓存的方法。

  2. Oracle的J2EE容器产品线(又名OC4J)中包含Java对象缓存框架。这在OC4J文档中有描述:"第9章 - Java对象缓存"。(我认为这不是您要找的内容。)

  3. 一些JVM实现具有一个功能,允许将编译后的类缓存并由不同的JVM共享或重复使用。IBM Java和Eclipse OpenJ9支持此功能;例如,请参见"共享类缓存"

    然而,这不是标准(免费)Oracle或OpenJDK Java的支持功能。显然,在Java 5中引入了一个模糊的JVM特性,用于共享系统类数据,并且自Java 8以来存在一种商业功能,可将其扩展到应用程序类。详细信息很难找到...

更新 - 自Java 10起,Oracle和OpenJDK JVM现在支持"类数据共享"(CDS)。本文档提供了如何从命令行重新生成缓存的说明。


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


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");

清除缓存后,它将向您显示警报。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接