-
OpenOffice内存无限增加10
我用:
soffice -headless -accept="socket,port=8100;urp;"
命令启动OpenOffice,然后在程序中public void run() { // 创建Openoffice连接 OpenOfficeConnection con=null; long newsooc_s=System.currentTimeMillis(); con = new SocketOpenOfficeConnection(8100); try { // 连接 long con_s=System.currentTimeMillis(); con.connect(); long con_e=System.currentTimeMillis(); System.out.println(this.getName()+" "+con.isConnected()+"'con.connect: "+con_e+"-"+con_s+"=0."+(con_e-con_s)%1000+"秒"); } catch (Exception e) { System.out.println("获取OpenOffice连接失败..."); e.printStackTrace(); } // 创建转换器 DocumentConverter converter = new OpenOfficeDocumentConverter(con); // 转换文档html String fn = "E:/test_oo/Fintelligen_"+this.hashCode()+ ".html"; converter.convert(new File("E:/test_oo/Fintelligen.xls"), new File(fn)); long dc_e=System.currentTimeMillis(); System.out.println(this.getName()+"'converter.convert: "+dc_e+"-"+newsooc_s+"="+(dc_e-newsooc_s)/1000+"."+(dc_e-newsooc_s)%1000+"秒"); // 关闭openoffice连接 con.disconnect(); }
这样就会使后台的openoffice内存不断变大,好像链接没有释放。
请大虾解决一下内存问题。
问题补充:<div class="quote_title">chen_yongkai 写道</div><div class="quote_div"><pre name="code" class="java">public void run() {
// 创建Openoffice连接
OpenOfficeConnection con=null;
try {
long newsooc_s=System.currentTimeMillis();
con = new SocketOpenOfficeConnection(8100);
// 连接
long con_s=System.currentTimeMillis();
con.connect();
long con_e=System.currentTimeMillis();
System.out.println(this.getName()+" "+con.isConnected()+"'con.connect: "+con_e+"-"+con_s+"=0."+(con_e-con_s)%1000+"秒");
// 创建转换器
DocumentConverter converter = new OpenOfficeDocumentConverter(con);
// 转换文档html
String fn = "E:/test_oo/Fintelligen_"+this.hashCode()+ ".html";
converter.convert(new File("E:/test_oo/Fintelligen.xls"), new File(fn));
long dc_e=System.currentTimeMillis();
System.out.println(this.getName()+"'converter.convert: "+dc_e+"-"+newsooc_s+"="+(dc_e-newsooc_s)/1000+"."+(dc_e-newsooc_s)%1000+"秒");
} catch (Exception e) {
e.printStackTrace();
} finally{
// 关闭openoffice连接
if(con!=null)
con.disconnect();
}
}</pre></div> <br /> <br />效果很明显,谢谢,应该是我的finally没有写的原因。 <br />测试过几次,并不能恢复到刚刚启动openoffice时的内存状态,好像总有一个链接存在,但是执行过程中已经内存有了明显的增加释放了。 <br />多线程与队列两种转换模式,执行完毕之后多线程残留的内存多,队列模式残留的内存相对少。2011年12月29日 09:58
1个答案 按时间排序 按投票排序
-
采纳的答案
public void run() { // 创建Openoffice连接 OpenOfficeConnection con=null; try { long newsooc_s=System.currentTimeMillis(); con = new SocketOpenOfficeConnection(8100); // 连接 long con_s=System.currentTimeMillis(); con.connect(); long con_e=System.currentTimeMillis(); System.out.println(this.getName()+" "+con.isConnected()+"'con.connect: "+con_e+"-"+con_s+"=0."+(con_e-con_s)%1000+"秒"); // 创建转换器 DocumentConverter converter = new OpenOfficeDocumentConverter(con); // 转换文档html String fn = "E:/test_oo/Fintelligen_"+this.hashCode()+ ".html"; converter.convert(new File("E:/test_oo/Fintelligen.xls"), new File(fn)); long dc_e=System.currentTimeMillis(); System.out.println(this.getName()+"'converter.convert: "+dc_e+"-"+newsooc_s+"="+(dc_e-newsooc_s)/1000+"."+(dc_e-newsooc_s)%1000+"秒"); } catch (Exception e) { e.printStackTrace(); } finally{ // 关闭openoffice连接 if(con!=null) con.disconnect(); } }
2011年12月30日 10:04
相关推荐
OpenOffice是一款开源的办公软件套件,它包含了与Microsoft Office相似的各种组件,如文字处理、电子表格、演示文稿制作、绘图以及数据库管理工具。这个压缩包包含了两个针对Linux操作系统的版本:OpenOffice_4.1.6_...
OpenOffice是一款开源的办公软件套件,它包含了文字处理、电子表格、演示文稿、绘图等多种组件,可与Microsoft Office兼容。对于开发者而言,OpenOffice提供了丰富的API接口,允许开发人员进行二次开发,实现自定义...
同时,对于大型文档,应考虑分段处理或采用流式转换技术,减少内存占用。此外,还应考虑文件格式的安全性,防止恶意代码通过文档执行。 7. **错误处理与日志记录**: 开发过程中,要对可能出现的错误进行妥善处理,...
在IT领域,特别是开源软件社区,Apache OpenOffice(简称OpenOffice)是一款备受推崇的免费办公套件,它提供了包括文字处理、电子表格、演示文稿、数据库管理等在内的多种功能,是Microsoft Office的一个强有力的...
OpenOffice是一款开源的办公软件套件,它包含了字处理、电子表格、演示文稿和图形编辑等组件,可与Microsoft Office兼容。在处理文档时,可能会遇到文本显示为乱码的问题,这通常是因为缺少特定的字体导致的。针对这...
- 需要一定的硬件配置,如至少512MB内存和1GB硬盘空间。 总的来说,OpenOffice 4.1.5 是一个强大且免费的办公软件替代方案,尤其适合个人用户和小型企业,它提供了与Microsoft Office相当的功能,同时也具备开源和...
OpenOffice组件,也称为UNO(Universal Network Objects)接口,允许开发者通过编程方式与OpenOffice进行交互。在C#中,我们可以使用JavaBridge或NPOI等库来调用这些接口,实现文件的操作和转换。以下是一些关键知识...
OpenOffice API是一个强大的工具,允许开发者通过编程方式与OpenOffice套件进行交互,包括创建、修改和处理类似于Microsoft Office的Word文档和Excel电子表格。在本文中,我们将深入探讨如何利用C++调用OpenOffice ...
1. 内存:至少256MB,推荐512MB以上。 2. 硬盘空间:大约700MB的可用空间用于安装。 3. 支持的Linux发行版:Ubuntu、Debian、Fedora、CentOS等主流Linux发行版都支持OpenOffice。 二、下载OpenOffice 首先,你需要...
OpenOffice 4.1.8 是一款开源的办公软件套件,专为各种操作系统,包括Ubuntu,提供免费的文档处理、电子表格、演示文稿、绘图和数据库管理工具。这款软件是Apache软件基金会的项目之一,旨在替代商业化的Microsoft ...
2. 打开Word文档:使用DocumentLoader服务加载Word文档到OpenOffice的内存中。 3. 转换操作:调用DocumentConverter的convert方法,指定源文档路径、目标PDF路径以及转换选项。 4. 关闭连接:完成转换后,记得关闭...
Apache OpenOffice API 是用于访问 Apache OpenOffice 的通用编程接口。可以使用 Apache OpenOffice API 创建、打开、修改和打印 Apache OpenOffice 文档。它提供了通过个人宏扩展 Apache OpenOffice 功能范围的选项...
OpenOffice是一款开源的办公软件套件,它包含了与Microsoft Office相似的应用程序,如Writer(文字处理)、Calc(电子表格)、Impress(演示文稿)和Draw(绘图)。这款软件的强大之处在于其跨平台的兼容性和对多种...
OpenOffice是一款开源的办公软件套件,它包含了与Microsoft Office相似的各种组件,如文字处理、电子表格、演示文稿制作、绘图以及数据库管理等工具。这个名为"openoffice示例.rar"的压缩包文件很可能是为了提供...
**OpenOffice二次开发详解** OpenOffice是一款开源的办公软件套件,它包含了文字处理、电子表格、演示文稿、绘图等多种组件,可以与Microsoft Office兼容。OpenOffice提供了丰富的API和工具,允许开发者进行二次...
OpenOffice是一款开源的办公软件套件,它支持创建、编辑和转换各种文档格式。在Java开发环境中,如果需要与OpenOffice进行交互,例如自动化处理文档或数据转换,开发者通常会用到特定的Java库,这些库被打包成JAR...
### OpenOffice Basic编程指南 #### 一、OpenOffice Basic编程简介 **OpenOffice Basic**是一种专为**OpenOffice.org**开发的编程语言,它与**Basic**家族中的其他语言(如Visual Basic或VBA)有着密切的关系。...
本话题主要关注如何使用OpenOffice API在Java环境中将Excel文件转换为PDF格式,同时确保图片等复杂元素能够完美保留。 OpenOffice是一个开源的办公套件,它提供了丰富的API,可以被Java应用程序调用进行文档操作,...
在处理大量文档转换时,需要注意性能优化,例如批量处理、多线程转换,以及合理配置OpenOffice的内存和CPU使用。 此外,转换过程中可能遇到的问题包括但不限于格式丢失、图片不显示、特殊字体无法正确呈现等。解决...