본문 바로가기

프로그래밍언어15

deep copy, shallow copy, String, Heap, Stack, Immutable, mutable 깊은 복사와 얕은 복사를 공부하려면 immutable과 mutable에 대해 정확히 알고 있어야 한다. mutable : 변할 수 있는 immutable : 변할 수 없는 1. 얕은 복사는 스택 메모리의 주소값을 복사 시킨다. mutable 객체일 경우 실제 데이터는 Heap영역에 저장된다. 그래서 스택영역의 메모리를 복사하는 얕은 복사일 경우에는 원본 데이터가 바뀌기 때문에 주의가 필요하다. 2. 깊은 복사는 힙 메모리의 데이터 까지 복사하기 때문에 Collection 프레임워크에 해당하는 구현체를 복사할 경우에 사용하면 좋다. mutable 객체는 배열, 리스트, 딕셔너리 ( 맵 ), 객체 등 다양한 종류가 있고, 스택에 힙 메모리의 주소가 저장되며 힙 메모리에 실제 데이터가 저장된다. immutab.. 2023. 2. 10.
JIT 컴파일러 JIT 컴파일러는 인터프리터이면서 컴파일러이다. C1, C2 컴파일러로 나뉘는데, 위 사진을 보면은 자바 인터프티터와 JIT 컴파일러가 있는 것이 보인다. C1 컴파일러가 자바 인터프리터에 속하고, C2 컴파일러가 JIT 컴파일러라 보면 된다. 자바가 다른 동적 컴파일 언어보다 좋은 성능을 내는 이유는 C2 컴파일러가 있기 대문이다. 번역된 코드를 캐싱하여 재사용시 캐싱된 코드를 가져와 다시 컴파일하지 않아도 되기 때문이다. >> 여기서 정적 컴파일과 같은 성능을 내기 때문이다. 하지만 모든 코드를 캐싱하지는 못한다. JVM의 캐시 공간은 매우 작기 때문에 자주 수행되는 코드들을 선별하여 캐싱한다. JVM은 코드들의 수행 빈도와 복잡도에 때라 4가지 레벨로 분류하는데 1~3 레벨 코드는 C1컴파일러를 이.. 2022. 12. 26.
비동기, 동기 통신과 call back Synchronous ( 동기 ) 동기 방식은 서버에서 요청을 보냈을 때 응답이 돌아와야 다음 동작을 수행할 수 있다. 즉 A작업이 모두 진행 될때까지 B작업은 대기 ASynchronous ( 비동기 ) 요청을 보냈을 때 응답 상태와 상관없이 다음 동작을 수행 할 수 있다. 즉 A작업이 시작하면 동시에 B작업이 실행된다. A작업은 결과값이 나오는대로 출력 콜백이란? 다른 함수의 인자로써 넘겨진 후 특정 이벤트에 의해 호출되는 함수. 1급 객체의 특징임 1급 객체 remind 함수의 파라미터로 전달할 수 있음.함수의 반환값으로 전달할 수 있음.객체끼리 비교연산 가능.변수에 담을 수 있다. 2022. 10. 3.
call by reference, call by value Call by reference 함수의 파라미터( 인자 )로 데이터의 주소가 전달됨 >> 해당 함수에서 데이터 주소 값을 변경하면 인자로 넘긴 데이터의 원본이 바뀜. Call by value 함수의 파라미터( 인자 )로 데이터의 값이 복사되어 값만 전달됨. >> 해당 함수에서 파라미터의 값을 바꾸어도 원본 데이터에는 반영되지 않음. 2022. 10. 3.