請問你們能幫我找到內存泄漏嗎?我來自C++世界,Java中的內存泄漏對我來說有點奇怪,因爲根據我的代碼,我不保留對臨時對象的引用。將對象持久保存到GAE數據存儲區後內存泄漏
我正在使用GAE SDK 1.6.1和Objectify 3.1。
我有以下在GAE dev服務器的後端實例中執行的方法(這可能與問題無關)。
private void loadProtoBufdata() throws Exception
{
ObjectifyDAO dao = new ObjectifyDAO();
for (long count = 0; count < 100; ++count)
{
Visitor visitor = new Visitor();
visitor.setKey(count + 1);
dao.ofy().put(visitor);
}
dao = null;
}
在ObjectifyDAO的構造函數中它被初始化爲
public ObjectifyDAO()
{
super(new ObjectifyOpts().setSessionCache(false).setGlobalCache(false));
}
而且Visitor
很簡單,只要
public class Visitor
{
@Id
Long key;
Long ek;
@Unindexed String ip;
Date t;
@Unindexed Long lzVisit;
}
我用的JProfiler 7.0.1捕捉內存泄漏。運行此代碼後,我有幾兆字節的com.google.storage.onestore.v3.OnestoreEntity$PropertyValue
和com.google.storage.onestore.v3.OnestoreEntity$Property
。
我不想炸掉這篇文章,所以我上傳了JProfiler的截圖。
我在Objectify的跟蹤器上發現了this bug,在Google Ground for GAE上發現了this thread。所以我不確定這是誰的錯誤。
問題是:
1)如何避免內存泄漏? 2)它是否在生產中發生?
謝謝!
PS。尼克,我知道你在讀這個。請幫助:)
[爲什麼在開發服務器上使用DataStore API時發生內存泄漏(未在生產環境中測試過)?](http://stackoverflow.com/questions/8843975/why-memory-leaks-occurs-when-using -datastore-API-上-DEV-服務器未測試功能於PR) – expert 2012-01-13 00:01:17