我在eclipse中有一个可运行的java SE应用程序。我引导JPA在普通的java 6 SE环境中工作。对数据库中不同表的每个请求都不会超过100毫秒。
问题在于,当我导出runnable jar并且我说java -jar myapp.jar时,对数据库的每个请求大约需要9秒。
我不明白为什么当我从eclipse运行它时应用程序更快
答案 0 :(得分:1)
事实上,每次我向数据库发出请求时,我都在创建一个实体管理器:
Persistence.createEntityManagerFactory( "mysqldb" );
为了优化实体管理器的创建,我使用像这样的单例实体工厂:
private static EntityManagerFactory em = Persistence
.createEntityManagerFactory( "mysqldb" );
public static EntityManagerFactory getEmf()
{
return em;
}
这有助于改善eclipse之外的应用程序的性能,但是当我在eclipse中运行时,性能没有任何变化。
我不确定应用程序从eclipse启动时效果更好的原因是什么,但此解决方案暂时解决了我的问题。
答案 1 :(得分:0)
我不确定如何使用eclipse编译器。 eclipse使用的ant脚本是:
<?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>
答案 2 :(得分:0)
您可以在两个版本上使用-verbose:class来查看它是否正在加载导致速度减慢的类的不同版本