SOに関する他の同様の質問を調べましたが、他の問題が原因のようです。
まず、すべてのファイルハンドルを慎重に閉じたことを確認してから、ファイルlsof -p <pid of java>
のリストを確認していました。
ランタイム全体を通してかなり一定ですが、定期的に次のlsof
ようにリストされた約10,000のエントリを取得します。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
...
java 36809 smm *235r PSXSEM 0t0 kcms00008FC901624000
java 36809 smm *236r PSXSEM 0t0 kcms00008FC901624000
java 36809 smm *237r PSXSEM 0t0 kcms00008FC901624000
java 36809 smm *238r PSXSEM 0t0 kcms00008FC901624000
java 36809 smm *239r PSXSEM 0t0 kcms00008FC901624000
マニュアルページにはPSXSEM
、タイプはPOSIXセマフォであると記載されています。JDKがPOSIXセマフォを使用するための手がかりはありますか?ところで、このアプリは現時点ではシングルスレッドのコマンドラインアプリです。
潜在的に役立つ背景:Mac OS X10.7.3でJDK1.7にアップグレードした後、最初にこれに気づきました。
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)
更新: JDK $JAVA_HOME
1.6での再ポイントは、この問題の回避策のようです。
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04-415-11M3635)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01-415, mixed mode)
JDK 1.7の違いは何ですか?