Приложение работает быстрее в затмении - PullRequest
3 голосов
/ 28 марта 2012

В Eclipse у меня есть работающее Java-приложение SE.Я загружаю JPA для работы в обычной среде Java 6 SE.Каждый запрос к различным таблицам в базе данных не занимает более 100 мс.

Проблема заключается в том, что когда я экспортирую исполняемый файл jar и говорю java -jar myapp.jar, каждый запрос в базу данныхзаймет около 9 секунд.

Я не понимаю, почему приложение работает быстрее, когда я запускаю его из eclipse

Ответы [ 3 ]

1 голос
/ 28 марта 2012

Фактически, каждый раз, когда я делал запрос к базе данных, я создавал менеджер сущностей:

Persistence.createEntityManagerFactory( "mysqldb" );

Чтобы оптимизировать создание менеджера сущностей, я использую фабрику одноэлементных сущностей, такую ​​какчто:

private static EntityManagerFactory em = Persistence
        .createEntityManagerFactory( "mysqldb" );

public static EntityManagerFactory getEmf()
{
    return em;
}

это работало для повышения производительности приложения вне затмения, но при запуске его внутри затмения не происходит никаких изменений.

Я не совсем уверен впо какой причине он работал лучше, когда приложение было запущено из eclipse, но это решение решило мою проблему на данный момент.

0 голосов
/ 28 марта 2012

Вы можете использовать -verbose: class в обеих версиях, чтобы увидеть, загружает ли он разные версии классов, вызывающих замедление

0 голосов
/ 28 марта 2012

Я не уверен, как использовать компилятор eclipse. Сценарий ant, используемый Eclipse:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project default="create_run_jar" name="Create Runnable Jar for Project Server">
<!--this file was created by Eclipse Runnable JAR Export Wizard-->
<!--ANT 1.7 is required                                        -->
<target name="create_run_jar">
    <jar destfile="myapp.jar" filesetmanifest="mergewithoutmain">
        <manifest>
            <attribute name="Main-Class" value="myapp.main.Main"/>
            <attribute name="Class-Path" value="."/>
        </manifest>
        <fileset dir="dir.../Myapp/build/classes"/>
        <zipfileset excludes="META-INF/*.SF" src=
            ..exclude all libraries
    </jar>
</target>
</project>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...