禁用/了解java applet类缓存行为

时间:2014-02-06 22:36:28

标签: java applet

我有一个java applet,我正在从unsigned分发转换为signed。签名版似乎启动速度较慢,在调查此问题时,减速是与我的Web服务器的一系列连接,在未签名时速度很快,但在applet签名时速度很慢。我一直在努力争取这个,因为我无法弄清楚为什么它首先建立连接,更不用说如何禁用这种行为。我也不清楚是什么创建了这些类,并且搜索涉及“Customizer”的java事情一直没有效果。

以下是java控制台的相关输出(有一点明显的审查):

  

基本:Applet已加载。
  basic:小程序调整大小并添加到父容器
  basic:PERF:AppletExecutionRunnable - applet.init()BEGIN; jvmLaunch dt 279063 us,pluginInit dt 1299510 us,TotalTime:1578573 us
  network:找不到缓存条目[url:MYHOSTURL / games / java / lang / ObjectCustomizer.class,version:null]
  network:使用proxy = DIRECT连接MYHOSTURL / games / java / lang / ObjectCustomizer.class   网络:连接MYHOSTURL:80 /与proxy = DIRECT
  网络:连接MYHOSTURL / games / java / lang / ObjectCustomizer.class与cookie“STUFF”
  network:找到缓存条目[url:MYHOSTURL / games / UnitValueCustomizer.class,version:null] prevalidated = false / 0
  cache:添加MemoryCache条目:MYHOSTURL / games / UnitValueCustomizer.class
  cache:资源MYHOSTURL / games / UnitValueCustomizer.class已过期   network:使用proxy = DIRECT连接MYHOSTURL / games / UnitValueCustomizer.class   网络:连接MYHOSTURL:80 /与proxy = DIRECT
  network:将MYHOSTURL / games / UnitValueCustomizer.class与cookie“STUFF”连接起来   network:使用proxy = DIRECT连接MYHOSTURL / games / UnitValueCustomizer.class   网络:连接MYHOSTURL:80 /与proxy = DIRECT
  network:将MYHOSTURL / games / UnitValueCustomizer.class与cookie“STUFF”连接起来   cache:资源MYHOSTURL / games / UnitValueCustomizer.class已过期   network:使用proxy = DIRECT连接MYHOSTURL / games / UnitValueCustomizer.class   网络:连接MYHOSTURL:80 /与proxy = DIRECT
  network:将MYHOSTURL / games / UnitValueCustomizer.class与cookie“STUFF”连接起来   network:使用proxy = DIRECT连接MYHOSTURL / games / UnitValueCustomizer.class   网络:连接MYHOSTURL:80 /与proxy = DIRECT
  network:将MYHOSTURL / games / UnitValueCustomizer.class与cookie“STUFF”连接起来   network:找不到缓存条目[url:MYHOSTURL / games / java / lang / ObjectCustomizer.class,version:null]
  network:使用proxy = DIRECT连接MYHOSTURL / games / java / lang / ObjectCustomizer.class   网络:连接MYHOSTURL:80 /与proxy = DIRECT
  网络:连接MYHOSTURL / games / java / lang / ObjectCustomizer.class与cookie“STUFF”
  network:找不到缓存条目[url:MYHOSTURL / games / BoundSizeCustomizer.class,version:null]
  network:使用proxy = DIRECT连接MYHOSTURL / games / BoundSizeCustomizer.class   网络:连接MYHOSTURL:80 /与proxy = DIRECT
  network:将MYHOSTURL / games / BoundSizeCustomizer.class连接到cookie“STUFF”
  network:找不到缓存条目[url:MYHOSTURL / games / BoundSizeCustomizer.class,version:null]
  network:使用proxy = DIRECT连接MYHOSTURL / games / BoundSizeCustomizer.class   网络:连接MYHOSTURL:80 /与proxy = DIRECT
  network:将MYHOSTURL / games / BoundSizeCustomizer.class连接到cookie“STUFF”
  网络:连接MYHOSTURL:3000 /与proxy = DIRECT
  我的程序的第一个输出

(注意:找到的UnitValueCustomizer缓存条目是我放在Web服务器上的垃圾文件,只是为了看看会发生什么 - 尽管下载了垃圾而不是类,但一切都正常运行。)

列出的类(也不是“Customizer”一词)不会出现在应用程序的java源代码中,也不会出现在编译中生成的.class或.jar文件中。没有“Customizer”的类名来自Miglayout。

因此欢迎任何关于如何以任何方式摆脱这种情况的提示,包括但不限于:

  1. 如何告诉VM不要在提供的applet之外寻找任何内容.jar

  2. 什么语言功能产生这些幻像类&如何避免

  3. 有关此类加载机制或其所谓的

  4. 的任何信息

1 个答案:

答案 0 :(得分:0)

  

如何告诉VM不要在提供的applet .jar

之外寻找任何内容

这需要Special Attributes of Applets中提到的codebase_lookup参数。

E.G。

<APPLET ...>
<PARAM name="codebase_lookup" value="false">
</APPLET>

问题2和3.可以得到最佳答案,因为JVM的一个功能可以通过codebase_lookup参数进行配置。以任一方式加载的类加载器完全相同URLClassLoader,但只配置了不同的类路径。

  • codebase_lookup: false仅包含archive属性中定义的Jars。
  • codebase_lookup: true(默认情况下,如果未指定)不仅包括archive属性中定义的Jars,还包括applet codebase本身 - 用于搜索不在Jar中的资源。