Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8010126

MaxFDLimit is relevant in Linux too

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 8
    • Component/s: docs
    • Labels:
      None

      Description

      Refer to http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
      -XX:+MaxFDLimit Bump the number of file descriptors to max. (Relevant to Solaris only.)

      Looking at the src code and strace the java process, the MaxFDLimit (default on) is applicable to Linux as well.

      [root@javalab-linux64 3-6835686171]# ( ulimit -Hn2048 ; ulimit -Sn999; strace -f -v -o sleep-on.txt /usr/jdk1.6.0_38/bin/java -XX:+MaxFDLimit -Xmx64M -cp . Sleep 2 )
      Sleep for 2s
      [root@javalab-linux64 3-6835686171]# ( ulimit -Hn2048 ; ulimit -Sn999; strace -f -v -o sleep-off.txt /usr/jdk1.6.0_38/bin/java -XX:-MaxFDLimit -Xmx64M -cp . Sleep 2 )
      Sleep for 2s
      [root@javalab-linux64 3-6835686171]# grep NOFILE sleep-o*
      sleep-on.txt:2952 getrlimit(RLIMIT_NOFILE, {rlim_cur=999, rlim_max=2*1024}) = 0
      sleep-on.txt:2952 setrlimit(RLIMIT_NOFILE, {rlim_cur=2*1024, rlim_max=2*1024}) = 0

      Sleep.java
      public class Sleep {
        public static void main(String args[]) {
          System.out.println("Sleep for " + Integer.parseInt(args[0]) + "s ");
          try {
            Thread.sleep(Integer.parseInt(args[0])* 1000);
          }
          catch (Exception e) {
            e.printStackTrace();
          }
        }
      }

        Attachments

          Activity

            People

            • Assignee:
              azhebel Alexey Zhebel (Inactive)
              Reporter:
              fchoong Fui-Shien Choong (Inactive)
            • Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: