【问题标题】:Java Applet slow when using ByteArrayStream使用 ByteArrayStream 时 Java Applet 很慢
【发布时间】:2011-06-24 10:30:17
【问题描述】:

我在自己的名为“V6BasicCar”的类的对象中转换 xml,我遇到的问题是,如果我启用 Java 缓存(在 Java 控制面板中):

每次转换大约需要 3-4 秒,但如果我禁用缓存,则只需几毫秒。我不知道为什么会发生这种情况,我唯一的猜测是 Java 正在缓存每个转换的 ByteArrayStream,这使它变慢,但我还没有弄清楚如何处理这个问题。有没有比 ByteArray Stream 更快的替代品?

谢谢。

代码:

{
..

ByteArrayOutputStream out = new ByteArrayOutputStream();

//1. transform xml    
transform(getSourceXml(_intype), out);

//2. convert to bean
XsdConverter<V6BasicCar> v6BasicCarXsdConverter = new XsdConverter<V6BasicCar>(V6BasicCar.class);     
    /* 
    "getObject()" takes about 2 secs 
    */
V6BasicCar newV6BasicCar = v6BasicCarXsdConverter.getObject(convert(out));

..
}


 protected InputStream getSourceXml(final CsvWrapperMiddle _csvV6Car) throws IOException, JAXBException
{
    ByteArrayOutputStream out = new ByteArrayOutputStream();   

        /* 
        "getXml" takes about 2 secs 
        */
    xsdConverter.getXml(_csvV6Car.getExternalBean(), out); 
    InputStream output = convert(out);   
    return output;
}

protected InputStream convert(ByteArrayOutputStream out)
{
    return new ByteArrayInputStream(out.toByteArray());
}

【问题讨论】:

  • Java chache 用于下载的 jar 文件,而不用于 ByteArray(In|Out)putStream 保存的数据。我真的不认为这应该影响这里的事情。问题可能出在 xsdConverter。
  • 好吧,正如您所说,问题似乎出在 XsdConverter 内部,特别是在 JAXB 中。将“com.sun.xml.bind.v2.runtime.JAXBContextImpl.fastBoot”设置为 true 可以解决问题 :) 谢谢!!

标签: java caching applet iostream


【解决方案1】:

问题出在 XsdConverter 内部,特别是在 JAXB 中。将“com.sun.xml.bind.v2.runtime.JAXBContextImpl.fastBoot”设置为 true 可以解决问题

【讨论】:

    猜你喜欢
    • 2010-10-19
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 2018-09-12
    • 2017-05-30
    • 2011-06-30
    • 2012-02-13
    • 1970-01-01
    相关资源
    最近更新 更多