특히 Windows 시스템에서 작업에 대한 CPU로드를 줄일 수는 없습니다. Linux의 Java는 비동기 파일 I/O를 지원하지만 코드가 심각하게 복잡해질 수 있습니다. File I/O는 일반적으로 Linux에서보다 Windows에서 훨씬 더 많은 시간이 걸리므로 Windows에서 실행되고있는 것으로 판단됩니다. Windows의 Linux VM에서 Java를 실행하여 개선 사항에 대해서도 들어 봤습니다.
프로세스가 실행 중일 때 작업 관리자를 살펴보고 커널 시간 표시을 설정하십시오. 사용자 공간에서 소비되는 CPU 시간은 일반적으로 최적화 될 수 있지만, 커널 공간의 CPU 시간은 일반적으로보다 효율적인 호출을 통해서만 줄일 수 있습니다.
- 업데이트 - 특별히 수집/파일 IO 비동기, 멀티 플렉스, 분산에 대한 요구를 해결
JSR 203 : JSR-51에 의해 소개 된 다중화 된 비 블록 설비가 많이 해결
그 문제의 네트워크 소켓에 대해,하지만 그것은 파일 시스템 작업을 위해 그렇게하지 않았습니다. JSR-203은 자바의 일부가 될 때까지
, 리눅스에 Apache MINA 프로젝트와 비동기 IO 진정한 얻을 수 있습니다.
Java NIO (1)을 사용하면 채널 기반 I/O를 수행 할 수 있습니다. 이는 성능이 향상되었지만 한 번에 데이터 버퍼를 수행하는 것이고 실제로는 비동기식이 아닙니다 & 다중화 IO입니다.
나는 그것이 OS 자체의 디자인에 있다고 생각한다. 우분투에서는 그렇게 할 수 없으며 Windows에서는 NTFS의 설계와 파일 액세스 메커니즘의 창 때문에 일반적인 상황입니다. Windows XP는 하나의 사용자 OS로 만들어졌으며 사용자가 'XXX 파일을 한 번에 열면 어떻게 될 것인가?'에 많은 관심을 기울이지 않았습니다. 나는 Windows 7에서 상황이 개선되었다고 생각한다. –