반응형
“Thread.sleep”이없는“while (true)”가 Linux에서 100 % CPU 사용을 야기하지만 Windows에서는 왜 발생하지 않습니까?
Java로 간단한 프로그램을 만들었습니다.
public static void main(String[] args) throws InterruptedException {
while (true)
;
}
Linux 컴퓨터에서 이것을 실행하면 100 % CPU 사용량이 표시되지만 OS가 느리게 나타나지는 않습니다. 그러나 Windows에서 정확히 동일한 코드를 실행하면 CPU 사용률이 약 20 %에 불과합니다.
Windows에서 Oracle JRE를 사용하고 Linux에서 OpenJDK 6을 사용하고 있습니다.
Windows 스케줄러가 스레드를 무작위로 선점하고 Linux가 아닌지 궁금합니다.
기본적 top으로 Linux에서는 Windows 작업 관리자가 아닌 소위 IRIX 모드로 실행됩니다. 코어가 4 개 있다고 가정 해 봅시다.
IRIX 모드가 켜져 있으면 1 개의 완전히 활용 된 코어가 100 %이고 4 개의 코어가 400 %입니다.
IRIX 모드를 끄면 완전히 활용 된 1 개의 코어가 25 %이고 4 개의 코어가 100 %입니다.
이것은 기본적 top으로 Linux에서 ~ 100 %로 무한 루프를 표시하고 Windows는 ~ 25 %로 표시하며 정확히 동일한 것을 의미합니다.
+ top로 실행중인 동안 IRIX 모드를 전환 할 수 있습니다 . 숫자가 일치하게됩니다.Shifti
반응형
'Programming' 카테고리의 다른 글
| Eclipse에서 디버깅하는 동안 전체 문자열보기 (0) | 2020.06.04 |
|---|---|
| HttpListener 액세스가 거부되었습니다. (0) | 2020.06.04 |
| 웹 페이지가로드 될 때 포커스를 텍스트 상자로 자동 설정하는 방법은 무엇입니까? (0) | 2020.06.04 |
| with 문에서 사용되는 open을 어떻게 조롱합니까 (Python에서 Mock 프레임 워크 사용)? (0) | 2020.06.04 |
| SQL Server에 대한 LIMIT 및 OFFSET에 해당합니까? (0) | 2020.06.04 |