Ant Java task은 fork
매개 변수를 제공합니다.이 매개 변수는 정의에 따라 "활성화 된 경우 다른 VM에서 클래스 실행을 트리거합니다"입니다. 방대한 양의 데이터를 처리 할 때이 매개 변수를 설정하면 Java 힙 공간이 부족 해지는 것을 막을 수 있습니다.
우리는 자바 클래스를 통해 동일한 작업을 수행 할 수 있기를 원합니다. fork
에서 제공하는 기능을 구현하는 가장 좋은 방법은 무엇입니까?Ant의 Java 작업에서 Java 포크와 동일합니까?
답변
다른 Java 프로세스를 실행하십시오. ProcessBuilder 클래스를 사용하여 예를 들어.
http://java.sun.com/javase/6/docs/api/java/lang/ProcessBuilder.html
당신이 원하는대로 당신은 많은 작업자 프로세스를 실행할 수 있습니다. 그들에게 분리 된 메인 클래스를 가지게하고, 메인 클래스에서 그들의 작업을하고, 그들의 작업이 끝나면 종료하십시오.
당신은 클래스 패스와 시스템상의 자바 바이너리의 위치를 알아 내야 만 할 것이다.
Process.waitFor()를 통해 완료 할 때 알림을받을 수 있다고 생각합니다.
그러나 동일한 VM에 있다고 생각합니다. –
아니요, 프로세스를 실행하면 다른 VM이됩니다. 두 가지 다른 프로세스는 어떤 방법으로도 하나의 VM을 공유 할 수 없습니다. – alamar
직접 Ant API를 사용할 수 있다고 생각합니다 ... Ant는 Java 클래스에서 직접 사용할 수 있습니다. Javadoc은 바이너리 배포판에서 사용할 수 있습니다. 당신이 ant
소스 코드를 보면 fork
이 true
, 때
, 그것은 단지 Execute
작업을 래핑 결국, 호출되는 코드는
Runtime.getRuntime().exec(cmd, env);
다운로드하고 소스 코드를 살펴 가진 org.apache.tools.ant.taskdefs.Java
및 org.apache.tools.ant.taskdefs.Execute
을 사용하면 플랫폼 독립적 인 방식으로 실행되도록 실행 파일의 위치를 찾는 데 유용한 정보를 얻을 수 있습니다.
- 1. Java 1.6.0_26은 Java 1.6.26과 동일합니까?
- 2. Ant의 javadoc 작업에서 타사 라이브러리를 연결하는 방법
- 3. 배치 Java 작업에서 인쇄
- 4. Silverlight는 서명 된 Java 애플릿과 동일합니까?
- 5. Java 정적 블록이 C# 정적 생성자와 동일합니까?
- 6. Java RMI InitialContext : LocateRegistry.createRegistry (int)와 동일합니까?
- 7. Java 코드 서명 인증서가 SSL 인증서와 동일합니까?
- 8. C 언어 라이브러리는 Java ScheduledExecutorService와 동일합니까?
- 9. struts의 java 작업에서 url을 호출하는 방법은 무엇입니까?
- 10. Ant의 XMLValidate 작업에서 제공하는 유효성 검사의 "수준"을 어떻게 변경합니까?
- 11. SSH 포크와 아이들
- 12. Ant의 이름에 디렉토리 매핑
- 13. Java Swing의 Android 토스트 또는 Mac OSX Growl과 동일합니까?
- 14. Objective-C는 Java 언어 사양 또는 C++ 표준과 동일합니까?
- 15. ANT build.xml에서 java 작업에서 jar와 classpath를 함께 사용할 수 없습니다.
- 16. Java - CHECKIN_UNIVERSAL 작업에서 Oracle UCM 유효하지 않은 필드
- 17. 네트워크 인터페이스 VB.Net/Java
- 18. ant의 build.xml에서 -Dfile.encoding을 어떻게 설정합니까?
- 19. Java 내에서 Java 모니터링
- 20. 파이프 포크와 execvp analogs 윈도우에서
- 21. 메이븐 플러그인에서 포크와 스폰 설정하기
- 22. Java
- 23. JAVA
- 24. Java For Loop의 차이점
- 25. Eclipse EE - Java EE Perspective 대 Java Perspective
- 26. Java 응용 프로그램과 Java 애플릿
- 27. Java EE/Java 브라우저 보안
- 28. Java 클래스에서 Java 클래스 호출
- 29. 스칼라 - Java =? (또는 Clojure-Java =?)
- 30. Java 7에서 Java 6 컴파일
실행하려면 -Xmx 및 -Xms 옵션을 사용하는 것보다 더 많은 힙이 필요합니다. 당신의 앱. 어쩌면 처음부터 여러 개의 프로세스, 더 많은 메모리가 필요하지 않을 수도 있습니다. 동일한 JVM 내에서 스레드 및 동시성 프리미티브를 사용할 수 있다는 이점이 있습니다. – basszero
오른쪽. 우리는 Xms와 Xmx를 다양한 값으로 설정함으로써 시도했지만 도움이되지 않았습니다. 프로그램은 결국 설정 한 값에 따라 다른 지속 시간 동안 실행 한 후 충돌했습니다. 분명히 메모리와 관련이 있지만 Ant (포크 세트 사용)를 통해 호출했을 때는 결코 직면하지 않았습니다. – pugmarx