====== Java Process ====== * [[http://stackoverflow.com/questions/1160656/runtime-exec-causes-duplicate-jvm-to-hang-indefinitely-until-killed-solaris-10|Runtime.exec causes duplicate JVM to hang indefinitely until killed (Solaris 10)]] * [[http://helloworld.naver.com/helloworld/textyle/1113548|hello world » Java에서 외부 프로세스를 실행할 때]] * Java 6 이하에서 ''Runtime.exec()''로 프로세스를 띄우면 현재 프로세스의 모든 메모리를 복재한 자식 프로세스가 뜨기 때문에 심각한 메모리 문제를 야기할 수 있다. * 해결책은 3가지 정도인데, 그 중에서 별도의 작은 프로세스를 띄워 소켓 통신하여 별도 프로세스에서 명령을 실행시키는 방식이 좋다. * [[https://github.com/axiak/java_posix_spawn|Java Posix Spawn]] 메모리 문제를 해결한 프로세스 생성 라이브러리 * [[http://wrapper.tanukisoftware.com/doc/english/child-exec.html|Java Service Wrapper]] 메모리 문제를 해결한 프로세스 생성 라이브러리 * JDK 7부터는 Linux에서 ''fork()'' 함수 대신 ''vfork()'' 함수를 기본으로 호출한다. JDK 8부터 Solaris와 BSD에서는 ''posix_spawn''을 기본으로 호출한다.