メモリリークを見つけてもらえますか?私はC++の世界から来て、Javaのメモリリークは私のコードによれば私には一時的なオブジェクトへの参照がないので、私にとってはちょっと変わったことです。オブジェクトをGAE Datastoreに保存した後にメモリリークが発生する
私はGAE SDK 1.6.1とObjectify 3.1を使用しています。
GAE開発サーバーのバックエンドインスタンスで実行されている以下の方法があります(これはおそらく問題とは無関係です)。 ObjectifyDAOのコンストラクタで
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;
}
それは
public ObjectifyDAO()
{
super(new ObjectifyOpts().setSessionCache(false).setGlobalCache(false));
}
そしてVisitor
のように初期化されています、私はメモリリークをキャッチするJProfilerを7.0.1を使用してい
public class Visitor
{
@Id
Long key;
Long ek;
@Unindexed String ip;
Date t;
@Unindexed Long lzVisit;
}
のと同じくらい簡単です。このコードを実行した後、私は
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。ニック、私はあなたがこれを読んでいることを知っています。 :)
[データストアAPIをデベロッパサーバーで使用するとメモリリークが発生する理由は?](http://stackoverflow.com/questions/8843975/why-memory-leaks-occurs-when-using -datastore-api-on-dev-server-not-tested-in-pr) – expert