【问题标题】:Clear Java Cache清除 Java 缓存
【发布时间】:2014-11-06 13:26:28
【问题描述】:

我想知道如何使用 Java 代码或 CMD 行代码清除 Java 缓存。

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

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

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

【问题讨论】:

    标签: java caching


    【解决方案1】:

    您可以使用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.
    

    【讨论】:

    • @Andremoniy 我也添加了那部分
    • 您好,谢谢,但正如我所提到的,我不需要为 Javaws 而是为 Javaw 这样做。
    • @user2138639 javaw?你确定没有打电话给cache
    • @Ruchira Gayan Ranaweera 你是什么意思?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      1. 应用缓存是 Java Webstart 和相关浏览器插件的一部分。这可以使用@RuchiraGayanRanaweera 的回答中概述的javaws 命令行工具或Java 控制面板来控制。

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

      2. Java 对象缓存框架是 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 开始)将其扩展到应用程序类。细节很难找到...

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


      鉴于最初提出问题的上下文,我怀疑 OP 是(曾经)实际上询问 Java Webstart 应用程序缓存,但没有意识到此功能是 Java 的一部分Webstart 而不是整个 Java SE。

      【讨论】:

        【解决方案4】:

        创建一个名为 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");
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-02-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-25
          • 2017-04-06
          相关资源
          最近更新 更多