1

この問題は始まったばかりで、先週、特定のソース ファイルに問題はありませんでした。私は SQLAlchemy と Geoalchemy を使用しています。Eclipse と Aptana をトリガーして、ファイルを編集するだけで CPU のペグを開始する特定のコード ブロックは次のとおりです。

obsRecs = db.session.query(multi_obs)\
.join(sensor,sensor.row_id == multi_obs.sensor_id)\
.join(platform,platform.row_id == sensor.platform_id)\
.join(m_type,m_type.row_id == multi_obs.m_type_id)\
.join(m_scalar_type,m_scalar_type.row_id == m_type.m_scalar_type_id)\
.join(obs_type,obs_type.row_id == m_scalar_type.obs_type_id)\
.join(uom_type,uom_type.row_id == m_scalar_type.uom_type_id)\
.filter(multi_obs.m_date > dateOffset)\
.filter(multi_obs.m_type_id.in_(mTypes))\
.filter(multi_obs.d_top_of_hour == 1)\
.filter(platform.active < 3)\
.filter(platform.the_geom.within(WKTSpatialElement(bboxPoly, -1)))\
.order_by(platform.row_id)\
.all()

そのブロック内の何かを編集し始めるとすぐに、問題が発生します。そのコードの一部を切り取り、ファイル内の他の領域を編集しましたが、問題はありません。他のpythonファイルも問題なく編集しました。最初はコード補完に問題があると思ったので、それをオフにしても問題が発生します。

Eclipse Indigo を使用していましたが、アプリを強制終了しないと、メモリ不足の Java エラーがスローされました。Aptana では、CPU が急上昇し、アイドル状態に戻り、編集を再開すると再び急上昇します。

私のセットアップ: OS X Lion Java(TM) SE ランタイム環境 (ビルド 1.6.0_31-b04-415-11M3646) Java HotSpot(TM) 64 ビット サーバー VM (ビルド 20.6-b01-415、混合モード) i7 クアッド コア、 8ギガバイトのRAM

この問題は、Apple からの最新の Java アップデートによって引き起こされた可能性があると考えたので、Time Machine を介してマシン全体をアップデート前の状態にロールバックしましたが、まだ問題が発生しています。

私は、非 PyDev ベースのソリューションを見つけようとしています。

エラーが発生するまでEclipseを実行できるように編集 すると、Console.Appは次のように表示されます。

8/1/12 9:14:01.114 PM [0x0-0x182182].org.eclipse.eclipse: Exception in thread "[Timer] - Main Queue Handler" Exception in thread "Poller SunPKCS11-Darwin" 
8/1/12 9:14:01.114 PM [0x0-0x182182].org.eclipse.eclipse: java.lang.OutOfMemoryError: Java heap space
8/1/12 9:14:01.114 PM [0x0-0x182182].org.eclipse.eclipse:   at sun.security.pkcs11.wrapper.PKCS11.C_GetSlotInfo(Native Method)
8/1/12 9:14:01.115 PM [0x0-0x182182].org.eclipse.eclipse:   at sun.security.pkcs11.SunPKCS11.initToken(SunPKCS11.java:767)
8/1/12 9:14:01.115 PM [0x0-0x182182].org.eclipse.eclipse:   at sun.security.pkcs11.SunPKCS11.access$100(SunPKCS11.java:42)
8/1/12 9:14:01.115 PM [0x0-0x182182].org.eclipse.eclipse:   at sun.security.pkcs11.SunPKCS11$TokenPoller.run(SunPKCS11.java:700)
8/1/12 9:14:01.115 PM [0x0-0x182182].org.eclipse.eclipse:   at java.lang.Thread.run(Thread.java:680)
8/1/12 9:14:01.115 PM [0x0-0x182182].org.eclipse.eclipse: java.lang.OutOfMemoryError: Java heap space
8/1/12 9:14:01.115 PM [0x0-0x182182].org.eclipse.eclipse:   at java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:45)
8/1/12 9:14:01.115 PM [0x0-0x182182].org.eclipse.eclipse:   at java.lang.StringBuffer.<init>(StringBuffer.java:103)
8/1/12 9:14:01.115 PM [0x0-0x182182].org.eclipse.eclipse:   at org.eclipse.equinox.internal.util.impl.tpt.threadpool.ThreadPoolFactoryImpl.execute0(ThreadPoolFactoryImpl.java:94)
8/1/12 9:14:01.115 PM [0x0-0x182182].org.eclipse.eclipse:   at org.eclipse.equinox.internal.util.impl.tpt.timer.TimerImpl.run(TimerImpl.java:110)
8/1/12 9:14:01.115 PM [0x0-0x182182].org.eclipse.eclipse:   at java.lang.Thread.run(Thread.java:680)

編集 2

Oracle JDK を入手し、それを使用するようにシステムを設定しました。同じ問題。

編集3

バックアップからの復元後も同様の問題が発生します。この問題は潜んでいたに違いなく、コード ブロックはそれをトリガーするのにちょうど良かったのです。コード補完エンジンは依然として主な疑いがあります。

4

4 に答える 4

3

私は同じ問題に遭遇していましたが、別の長いクエリが原因でした。オートコンプリートを無効にしてみました-cleanが、うまくいきませんでした。

修正するために、メモリ リークが爆発するのを待ちjmap.exe、ヒープをダンプしていました。次に、Eclipse Memory Analyzer を実行して、メモリがどこに移動しているかを確認しました。スクリーンショットを以下に添付します。ジョブに何かがあったcom.python.pydev.refactoring.markoccurrences.MarkOccurrencesJobので、Preferences->Pydev->Editor でそのオプションを無効にしました。

私がそうして以来、Eclipseはスピードの悪魔であり、クラッシュすることはもうありません. ある程度の信憑性がある人は、これをバグとして pydev に投稿する必要があります。

ここに画像の説明を入力

于 2013-04-12T11:55:42.030 に答える
0

私にとっては、PyDev 型推論エンジンのバグのように見えます... (メモリ不足エラーが発生するまでループしている可能性があります)。コードのそのサブセットだけでは、ここで再現できませんでした (つまり、sqlalchemy と geoalchemy をインストールし、そのファイルをソース ファイルとしてプロジェクトを作成し、ファイルを操作すると、すべて正常に機能しました)。

したがって、理想的には、それを再現できるプロジェクトを作成し、そのプロジェクトを添付するバグ レポートを作成してください (バグ レポートの作成場所の詳細については、http: //pydev.org/about.htmlを参照してください)。また、参照としてスタック オーバーフローのリンクを提供してください。

さて、そうは言っても、後で機能するのはメモリ スパイクだけかもしれません (その場合は、Eclipse.ini の -Xmx フラグをより大きなものに上げてみることができます。 32 ビット Java/Eclipse の場合、その値はおそらく 600m ~ 700m を超えてはなりません)。それでも、その場合でも、そのユースケースで使用されるメモリが多すぎることに関連するバグとして報告することを検討してください (ただし、それを再現する方法のシナリオとしてプロジェクトを提供してください)。

于 2012-08-02T11:40:30.057 に答える
0

過去に、クリーンなワークスペースから始めることで、Eclipse の狂気を解決することに成功しました。

暗闇でのショットのようなものですが、次のことを 1 つずつ試してください。

  1. -cleanオプションと既存のワークスペースでEclipse を開始します。
  2. 上記が機能しない場合は、新しいワークスペースで同じファイルを編集してみてください。

ファイルを編集しているときに Console.app を確認すると、関連するログ メッセージが表示されますか?

Aptana でファイルを編集しようとすると、Eclipse 内のエラー ログ ビューにエラー メッセージが表示されますか?

アップデート

Window 7 64 Bit の Eclipse Juno でこれを再現しようとしましたが、問題はありません。

ここに画像の説明を入力

時間のかかる作業になると思いますが、Eclipse Juno にアップグレードすることは可能でしょうか?

于 2012-08-01T21:29:40.933 に答える