发布于2022-01-08 22:13 阅读(1103) 评论(0) 点赞(17) 收藏(3)
根据 autocreateDatastoreTxns 的设置,我得到了内存泄漏,为每个查询(读取)创建了以下每个类的一个实例。即 100 个查询为下面的每个类创建 100 个实例(DatastoreServiceConfig 除外,它为每个查询获取 2 个实例)。
我在开发环境中使用 Java VisualVM 分析器发现了这一点。我这样做的原因是在生产中,我们的实例堆大小不断增长(通常在 10-20,000 个请求后变得太大)最终导致响应缓慢和实例重新启动。我不知道这是否是原因,但这是迄今为止我能够识别的第一次泄漏。
// 泄漏 datanucleus.appengine.autoCreateDatastoreTxns=false
org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManager
org.datanucleus.store.appengine.KeyRegistry
org.datanucleus.store.appengine.EmualtedXARResource
org.datanucleus.store.appengine.DatastoreConnectionFactoryImpl$DatastoreManagedConnection
// 泄漏 datanucleus.appengine.autoCreateDatastoreTxns=true
com.google.appengine.api.datastore.DatastoreServiceConfig // 2 instances per query
org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManager
com.google.appengine.api.datastore.AsyncDatastoreServiceImpl
com.google.appengine.api.datastore.DatastoreServiceImpl
org.datanucleus.store.appengine.jdo. DatastoreJDOTransation
com.google.appengine.api.datastore.DatastoreXARResource
com.google.appengine.api.datastore.DatastoreProperty
com.google.appengine.api.datastore.KeyRegistry
com.google.appengine.api.datastore.DatastoreConnectionFactoryImpl$DatastoreManagedConnection
com.google.appengine.api.datastore.TransactionStackImpl$ThreadLocalTransactionStack$StaticMember
com.google.appengine.api.datastore.TransactionStackImpl
org.datanucleus.store.appengine.RuntimeExceptionWrapperingDatastoreService
这是我的代码:
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
account = pm.detachCopy(pm.getObjectById(Account.class, accountKey));
} catch (javax.jdo.JDOObjectNotFoundException ex) {
account = null;
} finally {
pm.close();
}
任何想法/想法?这是 Google AppEngine 中的真正内存泄漏,还是开发环境的真实情况,或者可能是我自己的错误?
开发应用服务器旨在模拟真实应用服务器的语义,以便您可以合理保真地进行开发。这不包括内存行为,特别是关于数据存储。开发服务器倾向于以真正的应用程序服务器没有的方式将内容保存在内存中。分析开发服务器对于解决应用程序端的泄漏仍然很有用,但不会为您提供有关可能在应用程序服务器端的泄漏的太多指导。不过,我们确实要注意那些。随着时间的推移,堆确实会碎片化。
某些应用程序因其使用和数据访问模式的性质而受益于更大的前端实例。那些成本更高,因此您必须根据增加的成本来测试和权衡收益。
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/375945/50e31f29843721413e9f/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!