Java(3)
-
[Java] Thread가 하나 생성되면 Stack도 하나 생성된다.
스레드의 동작 방식을 알기 전에, 일단 프로세스와 스레드가 뭔지 알아봅시다. 프로세스프로그램은 실제 실행하기 전까지는 단순한 파일에 불과한다. 프로그램을 실행하면 프로세스가 만들어지고 프로그램이 실행된다. 이렇게 운영체제 안에서 실행중인 프로그램을 프로세스라고 한다. 프로세스는 실행 중인 프로그램의 인스턴스이다. 자바 언어로 비유를 하자면 클래스는 프로그램이고, 인스턴스는 프로세스이다. 각 프로세스는 독립적인 메모리 공간을 갖고 있으며, 운영체제에서 별도의 작업 단위를 갖는다. 각 프로세스는 서로의 메모리에 직접 접근할 수 없다. (격리된 환경 +> 특정 프로세스에 심각한 장애가 발생하면 해당 프로세스만 종료되고, 다른 프로세스에 영향을 주지 않는다.) 프로세스의 메모리 구성 코드 섹션 : 실행할 프로..
2025.04.18 -
[Java] 정적 바인딩과 동적 바인딩
정적 바인딩과 동적 바인딩바인딩은 언제 해주는지에 따라 정적 바인딩과 동적 바인딩으로 나뉘고, 변수의 바인딩과 함수의 바인딩 또한 차이가 있다. 바인딩이란? 바인딩이란 이름(identifier)을 어떤 속성과 연관 짓는 것을 말하며, 보통 변수, 상수, 함수 등의 이름을 속성과 연관 짓는 것을 말한다. 여기서 연관 짓는 다는 것은 변수나 함수와 같은 식별자가 특정 값 또는 메모리 위치에 결합되는 프로세스를 의미한다. - 변수에 구체적인 값을 할당하는 과정 - 메소드를 호출할 때 그 메소드가 위치한 메모리 주소로 연결하는 과정 정적 바인딩컴파일 시에 한번 바인딩이 이루어지고 실행 동안 변하지 않고 유지된다. 변수나 함수 호출시에 해당하는 메모리 주소나 값이 컴파일러에 의해 미리 결정된다. 동적 바인딩런..
2024.05.31 -
[Java] String, StringBuffer, StringBuilder
IMMUTABLE _ 변하지 않는 String 따라서 "+" 연산자로 기존에 선언된 문자열에 문자를 추가한다면 기존의 주소가 유지될까? 문자열 s1을 선언하여 app이라고 초기화 하고, '+' 연산자를 이용한 결과 주소값이 달라졌음을 알 수 있다. toUpperCase와 같은 메서드를 보면 문자열이 변경되는 것처럼 생각할 수도 있지만 해당 메서드를 수행할 때 또 다른 String 객체를 생성하여 반환할 뿐이다. 결국 연산을 진행할 때마다, 새로운 주소값을 갖는 객체를 힙메모리에 할당하여 참조하게 되는 것이다. System.out.println("------------String Test--------------"); String s1 = "app"; System.out.println(s1); System..
2024.04.23