CS/📝 언어

🎗 Garbage Collection이란?자바의 메모리 관리 방법 중 하나이다. JVM의 Heap 영역에서 동적으로 할단했던 메모리 중 필요가 없게 된 메모리 객체를 모아 주기적으로 제거하는 프로세스를 말하게 된다 Java는 가비지 컬렉터가 메모리 관리를 대행해주고 있기 때문에 Java 프로세스가 한정된 메모리를 효율적으로 사용할 수 있게 하고, 개발자 입장에서 메모리 관리, 메모리 누수 문제에서 관리하지 않고 오롯이 개발에 집중을 할 수 있다는 것이다 그렇다면 가비지 컬렉터의 단점은 무엇일까?물론 메모리를 자동으로 제어해준다는 것은 매우 매력적인 내용이다. 하지만 이가 무조건적인 장점이라고 볼 수 는 없다는 것이다. 메모리가 언제 해제되는지 정확하게 알 수가 없기 때문에 제어가 힘들다가비지 컬렉션이 ..
🧶 공통점new String() 과 ""의 차이는 둘 다 문자열을 생성하는 방법이다. 하지만 그럼 둘 중 하나만 사용하면 되지 왜 굳이 한 개가 더 있는 것일까? 🧶 차이점두 개를 비교하기 위해 Java에서 String을 어떻게 다루고 있느냐 부터를 알아야 할 필요가 있다. 자바에서 String은 java.lang의 패키지에 String클래스의 인스턴스로 관리한다. 즉 Heap 메모리에 String을 관리하는 StringPool 이라는 곳이 있고 우리가 거기에 단어를 저장 해두고 있는 것이다.String의 객체의 값은 변하지 않는다. 기존의 값을 변경한다고 해서 기존의 값이 사라지는 것이 아니라 그냥 추가로 더 생긴다는 것을 알 수 있다. 그렇다면 두개의 차이는 뭘까먼저 사진을 보자 사진을 보면 바로..
🎎 절차 지향과 객체 지향의 차이객체 지향은 절차를 간소화한것이다절차 지향은 데이터와 함수가 분리되고 통일성이 없지만 객체 지향은 좀 더 모듈화 되어 체계적이다절차 지향은 과도한 전역 변수의 사용으로 스파게티 코드 발생, 변경과 확장, 프로그램에 대한 이해가 어렵지만, 객체지향은 코드의 재사용성이 굉장히 좋다절차 지향은 프로그램의 순서와 흐름을 먼저 세우고 필요한 자료구조와 함수를 설계하는 방식객체 지향은 자료구조와 이를 중심으로 한 모듈들을 먼저 설계한 다음에 이들의 실행 순서와 흐름을 짜는 방식🎎 절차 지향과 객체 지향이 정반대일까?위의 그림이 보다 쉽게 이해하기 위해 그려진 그림이다. 딱 보면 알 수있듯이 절차지향은 글을 작성하듯 진행되고 객체지향은 연관관계로 이루어져서 하나의 글을 작성하는 것..
📄 OOP(Object Oriented Programming)은 무엇일까?영어를 그대로 해석한다면 Object(객체) Oriented(지향) 프로그래밍 즉, 객체 지향 프로그래밍의 영어를 약자로 적어 놓을것이다.  그렇다면 객체 지향 프로그래밍은 무엇일까? 바로 인간 중심적 프로그래밍이라고 할 수 있다. 현실 세계의 사물을 객체라고 보고 객체를 기준으로 코드로 나누어 구현한다. 대표적으로 OOP를 지키며 개발하는 것이 바로 Java이다.  Java의 클래스는 전체적인 설계도를 뜻하고 직접적으로 일을 하는 것이 바로 인스턴스이다. 그래서 자바는 OOP라고 해도 틀리지 않은 것이다.. 장점다른 클래스를 가져와 사용할 수 있고 상속받을 수 있어 코드의 재사용성이 증가하낟자주 사용되는 로직을 하나의 라이브러리..
추상 클래스 미완성 설계도라고도 표현하는 추상 클래스는 일반 클래스와 다를 것이 없다. 그저 클래스 내에 추상 메소드가 하나 이상 포함되거나 클래스가 abstract로 정의되어 있는 경우를 말하게 된다. 그렇게 추상적으로 선언이 된 메소드를 자식 클래스에서 상속받아 완성하게 하는 목표를 가진 것이라고 할 수 있다. 하지만 상속을 위한 클래스이기 때문에 따로 객체를 생성할 수는 없다. abstract class name { ... public abstract void methodName(); } 이런 식으로 추상 클래스 안에 추상 메소드가 들어가있는 것이다. 물론 추상이기 때문에 메소드의 구현부는 작성하지 않는다. 추상 클래스의 규칙 추상 클래스는 abstract를 붙여서 표현해야한다 클래스를 abstra..
들어가기전에... 자바는 OS에 독립적인 특징을 가지고 있다. OS에 독립적인 특징이라는것은 우리가 해당 코드를 실행하는 환경이 Window이든 MacOS이던지 차이가 없이 구동이 가능하다는 얘기이다. 그게 가능한 이유는 JVM덕분이다. 그렇다면 JVM의 어떠한 기능 때문에, OS에 독립적으로 실행시킬 수 있는지 자바 컴파일 과정을 통해 알아보도록 해보자 자바의 컴파일 과정 개발자가 Java를 사용해서 소스 코드를 작성한다(.java) 자바 컴파일러가 자바 소스파일을 컴파일한다. 이떄 나오는 파일은 자바 바이트 코드(.class)파일로 아직 컴퓨터가 읽을 수 없는 자바 가상 머신이 이해할 수 있는 코드이다. 바이트 코드의 각 명령어는 1바이트 크기의 Opcode와 추가 피연산자로 이루어져 있다. 컴파일된..
JIT 컴파일 또는 동적 번역은 프로그램을 실제 실행하는 시점에 기계어로 번력하는 컴파일 기법이다. 컴파일러 와 인터프리터 컴파일과 인터프리터 모두 high-level language를 machine language로 번역한다 컴파일러는 소스 코드 전체(우리가 사용하는 코드)를 한번에 번역하여 목적 파일(기계어)로 만들어 메모리에 적재한다. 인터프리터는 소스 코드를 한 줄 한 줄씩 중간 코드로 번역을 한 후에 실행한다. 컴파일러는 소스 코드 전체를 컴퓨터 프로세서가 실행할 수 있도록 바로 기계어로 변환하게 된다. 인터프리터는 high-level 언어를 중간 코드로 변환하고 이를 각 행마다 실행한다 일반적으로 컴파일러가 각 행마다 실행하는 특성을 가진 인터프리터보다 실행시간이 빠르다. 컴파일러는 전체 소스..
늦은산책
'CS/📝 언어' 카테고리의 글 목록