JAVA_OPTS="-server -Xms128M -Xmx256M -Xss256K -XX:PermSize=32M -XX:MaxPermSize=32M -XX:MaxDirectMemorySize=128M -XX: を使用して Linux (centos 6.3 x64) で Java(1.6 u25) プロセスを実行しています。 +UseAdaptiveSizePolicy -XX:MaxDirectMemorySize=128M -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:GCTimeRatio=39 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log"、thrift 0.8.0 を使用した Java アプリライブラリ;
TOP コマンドを毎日実行すると、Java プロセスの RES 値は増加し続けます (80MB から 1.2GB (アプリを開始してから 1 か月後)) が、jvm ヒープ サイズは約 100 から 200MB のままであり、GC ログは約 1 ~ です。 PSyoungGC は 1 分あたり 2 回、PSOld GC は 1 日あたり 1 ~ 2 回、メモリ リークはありません。
では、mem を使用する Java プロセスが増加し続け、JVM 設定を大幅に超えるのはなぜでしょうか? Java プロセスが実際に使用するメモリは、Xmx256M + MaxPermSize32M + MaxDirectMemorySize128M + JVM 自己使用メモリ = 約 416MB になると思いますか?