.Net

.Net 에는 VM 이 있다? 없다?

오즈마스터 2022. 8. 5. 10:17

Java 는 VM(Virtual Machine) 이 존재하는데 .Net 도 비슷한 원리로 돌아가지 않나 싶어서 궁금해서 알아낸 사실은,

.Net 에는 VM 이 없다.

 

Java : 소스코드 컴파일 -> 바이트코드 실행 -> VM위에서 인터프리터로 동작

.Net : 소스코드 컴파일 -> IL (Intermediate Language, 바이트코드와 비슷한 중간코드) 실행 -> CLR(Common Language Runtime) 이 JIT(Just-in-time) 컴파일하여 네이티브한 기계코드가 메모리에 상주하여 동작 (사실상 전통적인 방식의 코드가 실행되는 것과 차이가 없다)

그렇다면 .Net 은 최종적으로 네이티브 코드가 실행되는 것과 차이가 없긴 하지만, 실행될 때마다 실시간으로 JIT 컴파일해서 메모리에 상주 시키는 시간이 필요하기 때문에 실행 시간이 조금 더 걸릴 수 밖에 없다. (JIT 이후의 퍼포먼스는 네이티브와 동일할 것이고...)

이렇게, VM 위에서 인터프리터로 돌아가는 Java 와의 큰 차이점이 .Net 에 존재한다.

 

 

 

 

Is the CLR a virtual machine?

I read a book which referred to the .net CLR as a virtual machine? Can anyone justify this? What is the reason we need the concept of virtual machines on some development platforms? Isn't it possi...

stackoverflow.com

참고 : https://stackoverflow.com/questions/1564348/is-the-clr-a-virtual-machine