
Scouter JDK 17 이용 시 server 실행 문제
2024. 5. 14. 00:26
DailyStudy/Java
Scouter server sh 파일을 jdk 17 로 실행시 오류 Scouter 를 사용해보는 과정에서 JDK 17 버전에서 실행이 불가능 한 것을 확인 하였고 해당 문제를 해결 하는 방법을 공유 하고자 함. 현재 개발 시 사용중인 jdk 17 에서 scouter\server 경로의 .\startcon.bat(window os에서 실행) 을 실행 시켰을 경우 아래와 같은 에러가 나옴 더보기C:\Users\parkk\OneDrive\바탕 화면\scouter-all-2.20.0\scouter\server>java -Xmx1024m -Dadd-opens=java.base/java.lang=ALL-UNNAMED -Djdk.attach.allowAttachSelf=true -classpath ./scouter-..

Garbage Collection(GC)
2023. 10. 22. 00:50
DailyStudy/Java
Garbage Collection Concept GC가 이루어지는 영역은 young generation 과 old generation 으로 나뉘며 JVM 의 heap 영역에 할당된다. young generation 은 Eden 과 2개의 survivor space 로 나뉜다. old generation 은 old space 로 나뉜다. young generation 이 꽉 차게 되면 minor gc 가 이루어지고, 살아남은 객체는 old 영역으로 이동을 하게 된다. old 영역은 minor 영역보다 메모리 공간이 더 많고 큰 객체나 young 영역에서 살아남은 = 객체들을 보관한다. old 영역도 young 영역에서 이루어지는 minor gc 와 마찬가지로 공간이 꽉차게 되면 garbage collect..

JVM(JavaVirtualMachine)파헤치기 (2)
2022. 9. 23. 18:31
DailyStudy/Java
JVM의 구성요소 ▼JVM은 아래와 같이 구성되어져 있다.▼ 1. 클래스 로더(Class Loader) JVM의 Class Loader는 javac에 의해 변환된 바이트코드 파일인 *.class 파일을 Runtime Data Areas에 로딩하여 프로그램을 구동한다. Class Loader의 로딩은 런타임에 일어나는데, 클래스에 처음 접근될 때 일어난다. 이를 통해 Lazy Loading Singleton 이 구현되기도 한다. (+ Class Loading 시간엔 Thread -safe 하다.) 2. 실행 엔진(Execution Engine) Class Loader가 Runtime Data Areas에 불러온 바이트 코드를 실행한다. 바이트 코드를 기계어로 변경해 명령어 단위로 실행하는데, 1바이트의 O..

JVM(JavaVirtualMachine) 파헤치기 (1)
2022. 9. 22. 20:04
DailyStudy/Java
문득 Java라는 언어를 공부하면서 JVM에 대한 궁금증이 생겼다. 단순히 작성한 코드를 실행시켜주는 가상컴퓨터 이다 라고만 알고 있었기에 어떻게 동작을하고 하는 역할은 무엇인지 궁금해졌기에 파헤쳐보고자 한다. JVM이란? Java Virtual Machine의 줄임말로 Java를 실행시키기 위한 가상컴퓨터 환경을 말한다. 그럼 JVM이 하는 역할의 무엇일까? Java는 OS에 종속적이지 않다. 위와 같은 조건을 충족 시키며 작성한 코드가 실행되기 위해선 Java와 OS사이에 무언가가 필요하다. 그게 바로 JVM이다. 작성한 소스코드인(원시코드) *.java 를 cpu가 인식하기 위해선 기계어(010101000101...)로 변환이 이루어져야 한다. 그럼 *.java 가 바로 기계어로 변환되어 실행이 되..

객체지향 프로그래밍과 절차적프로그래밍에 대해 알아보자🕵
2022. 8. 31. 18:05
DailyStudy/Java
객체지향(OOP: Objected Oriented Programming) 과 절차지향(Procedure Programming) 객체지향언어와 절차지향언어는 절대 반대되는 개념이 아니다. 그렇다면 객체지향언어와 절차지향언어는 무엇인가? 우리는 보통 Java, Phython, C# 등의 언어를 객체지향 언어라고 부르며 C언어는 절차지향언어라고 부른다. 하지만 어디까지나 이 언어들이 지향하는 것이지 C언어는 절차적 프로그래밍만 가능하고 Java나 Phython 등은 객체적 프로그래밍만 가능하다는 것이 아니다. 어떤 언어를 사용하든 상관없이 절차지향적 프로그래밍을 할 수 있다. 반대로 C언어를 사용하더라도 객체지향적으로 코딩을 할 수 있는 것이다. 사실 절차지향적 언어라 하는 것은 잘못된 것이다. 모든 프로그래..