Pza*_*nno 4 java performance garbage-collection ormlite
我有一个看起来像这样的方法
public Dao<ModelStore, Integer> getDaoStore() throws SQLException {
return BaseDaoImpl.createDao(getConnectionSource(), ModelStore.class);
}
Run Code Online (Sandbox Code Playgroud)
当我打电话时,getDaoStore这是一个漫长的过程.在我的日志中,我可以看到GC在每次调用之后运行,所以我猜这次调用会有很多事情发生.
有没有办法加快速度?
对Android-land的深入研究表明,由于一种粗略的Method.equals()方法,Android下的注释非常缓慢且极其 GC密集.我们在版本4.26中添加了表配置文件,绕过了这个并使ORMLite启动得更快,更快.在邮件列表中查看此问题和此主题.
我们继续提高注释速度.另请参阅:Android上的ORMLite性能不佳?
DAO创建是一个相对昂贵的过程.ORMLite创建类中的类和字段的数据表示,并构建许多其他实用程序类,以帮助实现各种DAO功能.您应该确保createDao每次调用都调用一次该方法.我认为这是在Android @Pzanno下?
在4.16中,我们添加了一个DaoManager缓存Dao类的工作,这在4.20版本中得到了改进.然后,您应该始终使用它来创建您的Daos.建议使用以下代码:
private Dao<ModelStore, Integer> modelStoreDao = null;
...
public Dao<ModelStore, Integer> getDaoStore() throws SQLException {
if (modelStoreDao == null) {
modelStoreDao = DaoManager.createDao(getConnectionSource(),
ModelStore.class);
}
return modelStoreDao;
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.ORMLite的内存审计也可能是有序的.我看了它的消费已经有一段时间了.