Computer Science
-
[Java] GC 종류별 메모리 상황에 따른 테스트Computer Science/Java 2024. 2. 8. 17:40
특정 job 에 대해서 메모리를 설정해야하는데 이때 한번 GC를 종류별로 돌려보며 테스트를 해보았습니다. 다만 해당 job이 매우 짧게 끝나기도 하고 메모리를 적게 사용하며 CPU 사용율 등을 자세하게 확인하지 않았기에 가볍게 봐주시면 감사하겠습니다. 테스트 환경은 Java17에 OpenJDK 이며 모니터링으로는 VisualVM + VisualGC 와 jstat을 사용하였습니다. 비교한 GC는 SerialGC, ParallelGC, G1GC, ZGC로 Java17에서 지원하는 GC들 입니다. ShenandoahGC는 테스트하지 않았습니다. 목차 15MB [-Xms15m -Xmx15m] 50MB [-Xms50m -Xmx50m] 100MB [-Xms100m -Xmx100m] 결론 15MB [ -Xms15m ..
-
[Java] 버전별 GC 목록 ( OpenJDK )Computer Science/Java 2024. 2. 7. 17:55
GC 확인 방법 Java8의 GC Java11의 GC Java17의 GC Java21의 GC GC 확인 방법 현재 Default 로 적용된 GC를 확인하는 방법은 크게 2가지로 다음과 같습니다. 1. 적용중인 Flag를 확인하는 방법 java -XX:+PrintCommandLineFlags -version 해당 명령어로 현재 적용중인 Flag들과 버전을 같이 확인 할 수 있습니다. 위와 같이 결과가 나오는데 Java8의 경우 ParallelGC를 사용하는 것으로 확인됩니다. 2. 전체 Flag를 확인하는 방법 java -XX:+PrintFlagsFinal -version 해당 명령어로 사용 가능한 Flag들과 현재 그 값들을 확인할 수 있습니다. grep 명령어와 함께 사용하여 GC 목록들만 뽑아서 확인..
-
[JAVA] JVM 동작 방식Computer Science/Java 2024. 2. 6. 20:52
JVM이란 Class Loader Execution Engine Runtime Data Areas JVM이란 JVM은 Java Virtual Machine의 약자로 자바 바이트코드를 실행하는 가상 머신입니다. 자바는 Compile시 자바 Source Code가 바이트코드 ( .class 파일 ) 로 변환되며 이 바이트코드가 JVM에서 실행되는 구조입니다. JVM ( Java Virtual Machine )의 동작 구조를 간단히 설명하면 다음과 같습니다. Class Loader는 실행할 프로그램의 Class를 Runtime Data Areas에 Load 합니다. Load 된 Class는 Execution Engine 에 의해 실행됩니다. Class Loader Class Loader의 동작 방식을 자세히 ..
-
쿠키 ( Cookie ), 세션 ( Session )Computer Science 2024. 1. 5. 10:31
쿠키와 세션은 웹 통신을 함에 있어 사용되는 개념으로, 사용자의 웹 브라우저와 웹 서버간의 상태 정보를 관리하고 유지하는데 사용됩니다. 웹 통신은 기본적으로 HTTP 프로토콜을 사용하는데, Stateless 환경이기 때문에 상태 정보를 가지고 있을 수 없습니다. 이를 보완하기 위해 사용되는 것이 쿠키와 세션입니다. 이 둘의 공통점으로는 사용자의 정보를 저장하여 사용한다는 점입니다. 매번 인증 등을 진행하지 않고 사용자 정보를 제공한다는 점에서 장점이지만 보안을 신경써야한다는 점이 따라붙습니다. 이 둘의 가장 큰 차이점은 쿠키는 클라이언트 쪽에서 관리가 되며, 세션은 서버 쪽에서 관리가 된다는 점입니다. 이로인해 보안은 세션이 조금 더 좋으며 쿠키를 사용할 때에는 암호화 등을 진행하는 것이 좋습니다. 1...
-
[Java] Java version 별 차이 ( 7, 8, 9, 11 )Computer Science 2023. 12. 12. 23:18
java 7 - 다이아몬드 연산자 지원, switch 문에서 String 사용 가능 java 8 - LTS 버전, Default Method, 람다 표현식, 함수형 Method, Optional 구조체, java.time 패키지, Stream API, GC 개선 java 9 - Java Platform Module System ( jigsaw project ), G1 GC, HTTP/2 java 11 - LTS 버전, HTTP/2 강화, 람다 표현식에 로컬 변수 타입 추론 추가 java 7 Java 7 부터 제네렉에서 사용하는 오퍼레이터 ( 다이아몬드 연산자 ) 를 지원합니다. 다이아몬드 연산자를 사용하면 코드를 간결하게 만들고 가독성을 향상시킬 수 있습니다. List list = new ArrayLis..
-
[TypeScript] Type Compatibility ( 타입 호환성 )Computer Science 2023. 12. 9. 23:02
타입 호환성이란? 두 가지 타입 간에 비교를 통해 값이 할당 가능한지 여부를 나타내는 것 입니다. 즉 다른 타입이 해당 타입안에 들어올 수 있는지 판단합니다. TypeScript의 타입 호환성은 명목적 타이핑 ( nominal typing )이 아닌 구조적 서브 타이핑 ( subtyping ) 을 기반으로 합니다. 구조적 타이핑이란 오직 맴버만으로 타입을 확인하는 방식입니다. interface test1 { test: string; } class test2 { test: string; } let test3: test1; test3 = new test2(); // 맴버가 같기에 가능합니다. 함수의 비교 let first = (test: string) => "test"; let second = (test: ..
-
[JavaScript] Object VS Map ( 성능 비교 )Computer Science 2023. 12. 2. 23:07
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Map Map - JavaScript | MDN Map 객체는 키-값 쌍과 키의 원래 삽입 순서를 기억합니다. 모든 값(객체 및 원시 값 모두)은 키 또는 값으로 사용될 수 있습니다. developer.mozilla.org Object 키를 문자열 또는 심볼로만 가질 수 있는 구조입니다. 위 링크에서도 나와있지만 Object는 역사적으로 Map으로 사용되어왔습니다. Map key, value 형태로 저장 가능한 자료구조로써 빠른 검색 등에 사용합니다. Object와는 다르게 키의 데이터 유형에 제약이 없습니다. Map은 Object를 상속하여 사용합니다. 하지만 당연..
-
TCP ( Transmission Control Protocol )Computer Science 2023. 12. 1. 00:03
TCP ( Transmission Control Protocol ) Transmission : 전송 Control : 제어 Protocol : 프로토콜 ( 통신 규약 ) OSI 7 Layer에서 Transport Layer ( 4계층 )을 사용하는 프로토콜로 3계층에서 사용하는 IP와 같이 묶어서 TCP/IP라고 많이 부릅니다. TCP란 TCP는 세그먼트 단위로 데이터 통신을 하기 위한 프로토콜이며 다음과 같은 특징을 가지고 있습니다. 1. 연결 지향적 TCP는 통신을 시작하기 전에 3-way handshake 방식으로 연결을 설정하고, 통신을 종료할때 4-way handshake 방식으로 연결을 종료합니다. 2. 신뢰성 있는 통신 TCP는 데이터 세그먼트의 순서, 손실을 관리하여 데이터가 정확하게 수신..