49,500원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결더 자바, 코드를 조작하는 다양한 방법
jit 와 인터프리터 질문
jvm 이 자바 바이트 코드를 os 에 특화된 코드로 변환시켜서 실행해준다 라고 하셨는데요, 이때 인터프리터와 JIT 컴파일러의 역할은 정확히 어떤것인가요??
- 미해결더 자바, 코드를 조작하는 다양한 방법
JVM 메모리 구조에 대해 공부하다가 질문 드립니다.
안녕하세요! JVM의 메모리 영역 중 메소드 영역에 관해 질문 드립니다. .class 파일들이 JVM으로 로드 되면 메소드 영역에 Class에 대한 정보들을 담는 Class type객체나 static 변수들이 그 쪽에 할당된다고 하셨는데, 이게 어플리케이션이 컨테이너에서 구동될 때 이루어지는 작업이니까 혹시 그러면 어플리케이션이 완전이 시작한 이후에 application scope 내장 객체에서 getAttribute를 통해서도 접근이 가능 할까요..?? 또한 다른 변수들은 아닌 static 변수들만 method 영역에 생성되는 건지도 궁금합니다... static 변수, static 메소드, static 클래스 등등 static과 관련된 모든 object들이 저 영역에 생성이 되는 것인가요..? 강의를 통해 궁금한 점이 생겨 질문 드립니다! 감사합니다!
- 미해결더 자바, 코드를 조작하는 다양한 방법
안녕하세요.
제가 블로그에다가 수업 내용을 좀 정리하고 싶은데 출처를 이 강의로 명시한 상태에서 블로그를 작성해도 될까요?
- 미해결더 자바, 코드를 조작하는 다양한 방법
NPE 에 대해서 질문합니다.
안녕하세요 기선님 강의를 들으며 추가적으로 java 에 있어서 궁금한점 질문 남깁니다. java applicaiton 을 개발할 때 NullPointerException 발생에 있어서 다른 Exception들보다 개발자들이 예민하고 신중한 이유가 마땅히 나와 있지 않아 질문 올립니다. 개발자가 작성한 로직의 어느 시점이 의도치 않게 null을 참조함에 있어서..null에 참조, 접근한다고 NPE 을 발생시키는건 당연하고 그게 NPE 예외의 존재 이유가 아닌가 싶습니다. 비즈니스적으로 어떤 심각한 영향 때문에 NPE 발생에 예민한건지 궁금합니다.아직 학생이라 NPE 발생이 야기하는 심각성에 대해 체감을 잘 못하겠습니다.. 감사합니다.
- 해결됨더 자바, 코드를 조작하는 다양한 방법
강의 순서 문의
안녕하세요 jAVA 기본 문법 정도 알고 있는 초보입니다 더 나은 자바 개발자를 위한 로드맵이 좋아 보여서 전체 구매했는데요 1. 혹시 이 로드맵을 보기 전에 스프링에 대한 이해가 필요한가요? 스프링에 대해 전혀 모르면 이거 보기 전에 스프링을 먼저 배우는 게 좋을까요? 2. 그리고 이 로드맵에 나온 순서대로 보면 될까요? 로드맵에서는 1. 더 자바, 코드를 조작하는 다양한 방법 2. 더 자바, 애플리케이션을 테스트하는 다양한 방법 3. 더 자바, Java 8 이렇게 되어있는데 이대로 보는게 제일 나을까요? 감사합니다.
- 미해결더 자바, 코드를 조작하는 다양한 방법
힙 영역에 관한 질문입니다.
클래스 로더 시스템이 힙영역에 객체를 생성 한다고 하였는데 실제로는 실행 엔진이 바이트 코드를 실행하면서 힙영역에 객체 배치하는게 아닌가요 ?
- 미해결더 자바, 코드를 조작하는 다양한 방법
문서 버전 관련 내용 공유드립니다
드롭박스 버전은 수정 안된 문서가 올라와 있어 상황 공유 드립니다. 강의와 유튜브 재밌게 듣고 있습니다 감사합니다!
- 미해결더 자바, 코드를 조작하는 다양한 방법
gradle 사용시
gradle 사용시 mainfest plugin은 어떻게 넣어야하나요? 관련 링크를 못찾겠습니다...
- 해결됨더 자바, 코드를 조작하는 다양한 방법
JVM관련해서 질문이 있습니다.
안녕하세요 선생님. 제가 이해 했는 부분이 정확한지 여쭤보고 싶어 질문드립니다. 1. 로딩을 하는 과정에서 '클래스 로더가 .class 파일을 읽고 그 내용에 따라 적절한 바이너리 데이터를 만들고 “메소드” 영역에 저장'이 되는게 맞을까요 ? 로딩이 끝나면 해당 클래스 타입의 클래스 객체를 생성해서 힙영역에 저장 되는거구요. 2. Resolve는 .class 파일에서 필요한 자바 API의 이름만 지칭한것을 메모리상에서 실제로 존재하는 물리적인 주소로 대체되는 작업이라고 보면 될까요? 3. 로딩 > 링크 > 초기화 순이면 로딩과정에서 먼저 메소드영역에 데이터를 저장 한다음 링크에서 .class 파일을 검증(Verify)를 하는건가요 ? 4. '클래스 로더가 .class 파일을 읽고 그 내용에 따라 적절한 바이너리 데이터를 만들고 “메소드” 영역에 저장.' 이때 바이너리 데이터를 만들때는 인터프리터를 이용하는걸까요?
- 해결됨더 자바, 코드를 조작하는 다양한 방법
클래스로더 질문이 있습니다.
안녕하세요 매번 유튜브와 인프런에서 좋은강의 감사합니다. 질문이 있습니다. 클래스 로더에서 '로딩이 끝나면 해당 클래스 타입의 Class 객체를 생성하여 "힙" 영역에 저장.' 이라고 설명 되어 있는데요. 클래스 타입의 Class 객체를 생성 이부분이 헷갈려서요 만약에 Book 클래스가 있으면 Book book = new Book(); <- 이것을 뜻하는걸까요 ? 그렇다면 만약 new 키워드가 없고 인스턴스화를 하지 않으면 Class 객체를 생성하지 않는다는 말인지요..
- 해결됨더 자바, 코드를 조작하는 다양한 방법
class loading 의 시점
안녕하세요 개발자님! 굉장히 초보적인 질문일 수도 있지만 조금 애매한 것이 있어서 질문드립니다. [javaagent 실습] 강의 초반에 보면 new ByteBuddy().redefined(Moja.class).~~~ (생략) 이라는 코드가 있는데, 1. main 메소드가 실행되면서 인터프리터가 이 코드를 읽는 순간에 Moja 클래스가 클래스로더에 의해서 로딩되는 건가요? 2. 아니면 main 이 실행되기 전에 이미 Moja 클래스가 로딩이 된건가요? 사실 제가 이전에 했던 verbose:class 를 통한 테스트를 여러번 했을 때는 1번이 맞는거 같은데, 초보여서 확신을 갖지 못하고 우왕좌왕합니다. 뭐가 맞는 걸까요?
- 미해결더 자바, 코드를 조작하는 다양한 방법
runtime constant pool 에 대해 질문드립니다!
1. Integer autoboxing 할 때, constant byte code 가 어떻게 되는 지 궁금해서 명령어 찾아봐서 한번 출력해보았습니다! 근데 상수 값이 안나오는걸 확인해서 stackoverflow에 찾아보니 작은 값에 대해서는 특정 instruction을 사용해서 관리한다고 해서 어느정도 납득이 됐었는데, #10을 보시면 Integer가 하나만 출력되있더라구요 이게 Integer를 사용할떄 -127~127캐싱하는 것때문에 한번만 선언되나 해봐서 다음과 같이 해봤더니 똑같이 출력되었는데, 클레스 정보를 한번만 할당해서 메모리 효율을 높이기 위함이라고 생각하면 될까요?! 2. 문득 constant pool 에 대한 메모리 관리에 대해서도 궁금해 졌는데, 사용하지 않는 상수에 대해서 runtime constant pool 도 메모리 해지가 일어나나요? 좀 찾아본 결과로는 jit 에 의해서 사용하지 않는 primitive 나 local변수가 제거된다는데 맞는 정보일까요
- 미해결더 자바, 코드를 조작하는 다양한 방법
안녕하세요 백기선 개발자님
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 현재개발자를 꿈꾸는 학생입니다. 다름이 아니라 제가 기술블로그를 작성중인데 출처를 남기고 제가 개발자님 강의를 정리하여 올려도 될까요?? 하기전에 말씀드려야 될꺼같아 질문 남깁니다!
- 미해결더 자바, 코드를 조작하는 다양한 방법
리플렉션 질문 드립니다!
리플렉션이 가능한 이유가 클래스를 로딩할때 Class 객체가 힙에 저장되기 때문이라고 알고있습니다.(즉, 한번은 클래스 로딩이 되어야한다(?)) 예를 들어 실행시 입력받은 클래스를 Class.forName(args[0])으로 런타임 동적로딩을 하려고 할 때 입력받은 클래스는 아직 로딩이 안된거 같은데..(한번도 로딩이 안되었다(?))어떻게 가능한걸까요?? 제가 잘못 이해하는 부분이 있을까요??
- 해결됨더 자바, 코드를 조작하는 다양한 방법
저 궁금한게 있습니다.
강의 중에"Extension 클래스 로더"라 하지 않고,이제는 "Platform 클래스 로더"로 한다고 언급하셨는데,그러면 강의 자료에Extension이 작성되있는 것이아닌,Platform으로 작성되있어야 하는거 아닌가요? 강의 듣는데는 문제는 없지만, 어쩌면 오해의 소지가 있을 수 있어서 질문드립니다.
- 해결됨더 자바, 코드를 조작하는 다양한 방법
JVM 에서 metaspace와 static 에 대해 질문드립니다.
java 학습중인 학생입니다! java7에서 permanet 영역(method area)이 java8에서 metaspace로 대체 됐다고 들었습니다. 그 변경사항중에 static과 상수가 method area 에서 heap 영역으로 이동됐다고 알고있는데 클래스 로더가 static 변수를 할당할때 heap 영역에 할당한다고 생각하면 될까요? 그리고 대체되었다면 method area가 metaspace로 변경된건지도 질문입니다!
- 해결됨더 자바, 코드를 조작하는 다양한 방법
바이트코드 조작 강의 매우 유익했습니다.
컴포넌트 스캔 동작이 전부터 궁금했었는데, 명쾌한 설명 정말 감사합니다!
- 해결됨더 자바, 코드를 조작하는 다양한 방법
PC 레지스터의 설명 부분에 오류가 있는 것 같습니다.
안녕하세요? 기선님 영상에서 작은 오류를 발견한 것 같은데요. PC 레지스터는 현재 실행중인스트럭션의 주소가 저장되는 게 맞는 듯합니다. The pc Register The Java Virtual Machine can support many threads of execution at once (JLS §17). Each Java Virtual Machine thread has its own pc (program counter) register. At any point, each Java Virtual Machine thread is executing the code of a single method, namely the current method (§2.6) for that thread. If that method is not native, the pc register contains the address of the Java Virtual Machine instruction currently being executed. If the method currently being executed by the thread is native, the value of the Java Virtual Machine's pc register is undefined. The Java Virtual Machine's pc register is wide enough to hold a returnAddress or a native pointer on the specific platform. (출처: 오라클)
- 해결됨더 자바, 코드를 조작하는 다양한 방법
site 폴더가 안생깁니다 ㅜㅜ
https://github.com/KAN-JUNHO/workspace jacoco 설치후 target/site 라는 폴더가 생기지 않습니다 ㅜㅜ
- 미해결더 자바, 코드를 조작하는 다양한 방법
바이트버디 Unloading 관련해서 질문드립니다.
먼저, 자바8과 스프링 강의등 다 잘 수강을 마쳤습니다. 항상 좋은 강의 만들어주셔서 감사하게 보고있습니다 :) 본론으로 들어가 Java Code Hot Deploy와 관련되서 여기저기 찾아보다가 결국에 백기선님 강의까지 도달했는데요. 제가 알고 있기로는 자바의 BootStrap이나 Extension 그리고 System나 Application Class Loader의 경우 Unloading 기능이 없는 것으로 알고 있습니다. 바이트 버디와 말씀하신 부분 중에서도 궁금했던 부분이 언로딩 기능인데요. 모자라는 클래스를 Application Class Loader와 바이트 버디가 만들어주는 Class Loader에서 로드해주기 때문에 사실상 같은 이름이지만 JVM 상에서는 2개라고 말씀해주셨던 부분이 있었습니다. 제 생각은 그렇다면 바이트 버디가 Unloading과 Reloading이 가능한 이유는 바이트 버디가 자체적으로 Class Loader를 갖고 있기 때문에 JVM 내부에 있는 클래스 로더의 Unloading이 안된다는 단점을 상쇄시킨 것이라고 생각하면 될까요?