首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用OpenOffice4时的CPU利用率为100%

使用OpenOffice4时的CPU利用率为100%
EN

Stack Overflow用户
提问于 2017-06-30 21:51:05
回答 2查看 686关注 0票数 1

我正在尝试使用JOD Converter将文档(.docx/.xlsx/.pptx)转换为PDF。我在CentOS7上使用的是OpenOffice 4.1.2。我的问题是,当我转换文件时,CPU使用率一直保持在100%,这影响了整个机器的性能。我已经尝试了命令行选项中的所有可能选项,但不幸的是,无法缓解此问题。我在很多论坛上搜索过,发现很多人也面临着同样的问题,然而,没有解决方案。通过我的阅读,我意识到这可能是因为OpenOffice中的内存泄漏问题。有没有人能帮我解决这个问题,或者至少缓解这个问题?

下面是我用来生成OpenOffice实例的命令。

代码语言:javascript
运行
复制
/opt/openoffice4/program/soffice.bin -accept=socket,host=127.0.0.1,port=8016;urp; -env:UserInstallation=file:///tmp/.jodconverter_socket_host-127.0.0.1_port-8016 -headless -nocrashreport -nodefault -nofirststartwizard -nolockcheck -nologo -norestore

我用来转换文件的代码如下:打包org.samples.docxconverters.jodconverter.pdf;

代码语言:javascript
运行
复制
import java.io.File;

import org.apache.commons.io.FilenameUtils;
import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeManager;

public class Word2PdfJod {

    public static void main(String[] args) {

        // 1) Start LibreOffice in headless mode.
        OfficeManager officeManager = null;
        try {
            officeManager = new DefaultOfficeManagerConfiguration()
                .setOfficeHome(new File("/Applications/OpenOffice.app/Contents/")).buildOfficeManager();
            officeManager.start();

            // 2) Create JODConverter converter
            OfficeDocumentConverter converter = new OfficeDocumentConverter(
                    officeManager);

            // 3) Create PDF
            createPDF(converter);

        } finally {
            // 4) Stop OpenOffice in headless mode.
            if (officeManager != null) {
                officeManager.stop();
            }
        }
    }

    private static void createPDF(OfficeDocumentConverter converter) {
        try {
            long start = System.currentTimeMillis();
            String src_file = "/Users/Aman/Documents/WindowsData/DocumentConversionPoc/Powerpoint2Pdf/JODConverterV3/Sample_pptx_files/AdeemSample2.pptx";

            System.out.println(src_file.substring(0, src_file.lastIndexOf(".")) + "_" + FilenameUtils.getExtension(src_file) );
            //Actual Conversion

            converter.convert( new File(src_file), new File( src_file.substring(0, src_file.lastIndexOf(".")) + "_" 
                        + FilenameUtils.getExtension(src_file) +"_Jod.pdf") );
            System.out.println("Time Taken in conversion -  "+ (System.currentTimeMillis() - start) + "ms");


        } catch (Throwable e) {
            e.printStackTrace();
        }
    }
}

相关的jars可以从https://drive.google.com/file/d/0B4hS5IGxGOh9OE5Ca0RlbTdVclU/view?usp=sharing下载

EN

回答 2

Stack Overflow用户

发布于 2017-07-07 20:49:13

如果CPU空闲,默认情况下进程将占用100%的CPU时间。这很正常。如果这会阻碍其他进程的执行(极不可能),您可以使用nice设置优先级。

代码语言:javascript
运行
复制
nice <your command>

或者,您可以安装cpulimit,当程序达到预定义的CPU使用率时,它会使程序休眠。阅读关于它的here

票数 4
EN

Stack Overflow用户

发布于 2017-07-14 19:36:37

通过减少应用程序可以使用的核心数量,您可以防止系统被锁定:

代码语言:javascript
运行
复制
Process.GetCurrentProcess().ProcessorAffinity = (System.IntPtr)2;

To set the affinity of CPUs using C#

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44848132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档