묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
InterruptedExceptionThreadStopExample 질문입니다.
InterruptedExceptionThreadStopExample 를 돌리면 강의 로그에서는============= 중단 스레드가 작업 스레드를 중단 시켰습니다.인트럽트 상태 1 : true=============형태가 찍히는데 제 로컬에서는=============중단 스레드가 작업 스레드를 중단시켰습니다.인트럽트 상태 2 : false=============가 찍히는데 이건 확률적으로 로그가 찍히는 걸까요? 답변 부탁 드립니다!
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
프로세스의 메모리 구성과 자바 메모리 구조의 상관 관계
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 저는 영한님의 강의를 듣고 자바와 스프링을 공부하고 있는 수강생입니다. 양질의 강의를 제공해 주셔서 감사합니다.강의를 전부 듣고 복습을 하던 중에 궁금한 부분이 생겨서 질문 드립니다. 섹션 2 "프로세스와 스레드" 강의에서는 프로세스의 메모리 구성에 대한 내용과,섹션 3 "스레드 시작1" 강의에서는 자바 메모리 구조에 대한 내용의 상관 관계에 대해서 이해가 어려운 부분이 있어서 질문드립니다. 프로세스의 메모리는 4가지 영역(코드, 데이터, 힙, 스택)으로 나눠서 설명해 주셨고자바의 메모리 구조는 크게 3가지 영역(메서드, 힙, 스택)으로 나눠서 설명해 주셨는데요.여기서 프로세스의 힙, 스택 영역과 자바의 힙 스택 영역이 같은 것을 의미하나요?만약 같다면, 프로세스에서 코드, 데이터 영역은 자바의 메모리 구조로 봤을 때 메서드 영역에 포함되는 개념인가요?중복되는 질문일 수 있지만.. 검색해보니, 일반적으로 프로세스당 하나의 jvm 인스턴스를 가진다고 하는 것을 확인했는데요. 그럼 한 jvm 인스턴스에서 하나의 프로세스만을 관리하고 있을 때, (프로세스의 메모리 구조 == 자바의 메모리 구조)라고 생각해도 되는 걸까요?질문 확인해 주셔서 감사합니다. 좋은 하루 되세요!
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
문제 1번 동시성 오류의 이유
간단한 질문 하나가 있습니다! 혹시 문제 1번에서는 "멀티 코어" 이기 때문에 발생한 상황으로 봐도 맞을까요? count = count + 1 이 세가지 작업을 수행하긴 하지만, 한 줄이기 때문에 CPU 가 한 줄씩 수행하는 입장에서 도중에 스레드를 변경하진 않는 것 아닌가 싶은 의문이 들어서 문의드리게 되었습니다!
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
[오타 제보] pdf 4.
오타 제보 드려요 4. 스레드 제어와 생명 주기2.pdf 6페이지 이때 work 스레드는 TIMED_WAITNG부분입니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
[오타 제보] pdf 10, 11 챕터
안녕하세요. 오타 제보입니다.자바 고급1편 11.동시성 컬렉션 pdf 4페이지add(): 컬렉션에 데이터를 추가한다sleep(100): 잠시 기대한다. 자바 고급1편 10. CAS-동기화와 원자적 연산 pdf 7페이지 6번째 줄 이 문제는 연산 자체가 나누어져 있기 때문에 발생한다. volatile 은 연산 차제를 원자적으로 묶어주는 기능이 아니다. 강의 감사히 듣고 있습니다!! 감사합니다.
-
해결됨앨런 Swift Concurrency for Swift 6 (Part-1)
업데이트 예정 강의 공개 일정이 궁금합니다.
안녕하세요.part1 강의에서 업데이트 예정 항목이 몇가지 있는데요. 해당 영상은 언제쯤 공개 되는지 궁금합니다. (업데이트) TaskGroup 실행함수 파라미터 추가 관련 업데이트 예정(업데이트 예정) 취소 핸들러 관련 내용 업데이트 예정 (API 업데이트)
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
문제와 풀이 invokeAll()로 풀때 예외처리
안녕하세요 해당 문제를 invokeAll()로 풀었는데 예외처리 부분을 어떻게 처리해야할지 궁금해 질문 올렸습니다. 저는 예외를 main메서드에서 잡았지만 , NewOrderService에 try-catch문을 써서 예외를 잡는게 뭔가 응집도가 높아보인다 해야하나? 관련있는 코드끼리 모여있어서 더 유지보수 하기 좋은 코드라고 생각합니다. 그럴려면 order 메서드 안에 이중 try문을 써야하는게 최선인가요? (invokeAll, future.get() 2번) public class NewOrderService { private final ExecutorService es = Executors.newFixedThreadPool(10); public void order(String orderNo) throws InterruptedException, ExecutionException { InventoryWork inventoryWork = new InventoryWork(orderNo); ShippingWork shippingWork = new ShippingWork(orderNo); AccountingWork accountingWork = new AccountingWork(orderNo); List<Callable<Boolean>> works = List.of(inventoryWork, shippingWork, accountingWork); //작업 요청 try { List<Future<Boolean>> futures = es.invokeAll(works); for (Future<Boolean> future : futures) { Boolean result = future.get(); } } finally { es.close(); } } .........InventoryWork,ShippingWork,AccountingWork 클래스 } public class OrderServiceTestMain { public static void main(String[] args) { String orderNo = "Order#1234"; NewOrderService orderService = new NewOrderService(); try { orderService.order(orderNo); log("모든 주문 처리가 성공적으로 완료되었습니다."); } catch (ExecutionException e) { log("일부 작업이 실패했습니다."); throw new RuntimeException(e); } catch (InterruptedException e) { throw new RuntimeException(e); } } }
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
FutureTask 객체의 사용후 GC 유무
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 Future 관련 공부를 하다가 궁금증이 생겨 질문 남겼습니다. ThreadPoolExecutor 객체 안에 FutureTask 객체를 만들고 그 안에 task(Callable 구현 객체)를 보관한다고 알고 있습니다. 그러면 스레드풀에 있는 스레드가 해당 Future 작업을 완료한 후에 main 스레드에서 future.get()으로 값을 반환 받고 난 후에 해당 future 객체는 GC가 알아서 처리해주는건가요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
synchronized와 메모리 가시성
각각의 CPU 코어에는 각각의 캐시 메모리가 있고 여기에 임의의 쓰레드가 할당되어 실행된다고 하셨습니다.RAM에서 캐시 메모리를 가져올 때 primitive type은 직접 값을 가져오므로 메모리 가시성 문제가 발생할 수 있지만 참조값을 가져오는 경우에는 캐시 메모리에서도 참조를 하게되므로 가시성 문제가 존재할 수 없는 구조인가요?synchronized 메서드 안에서 사용된 멤버 변수의 경우 자동적으로 volatile로 처리된다고 이해하면 될까요?항상 감사합니다!
-
해결됨앨런 Swift Concurrency for Swift 6 (Part-1)
29강 async let 작업 취소 부분 질문
📌 자주하는 질문 모음링크: https://pointed-earwig-996.notion.site/Swift-Concurrency-for-Swift-6-Part-1-22eecb0b83154ac28c7c66446f6e54e1?pvs=4 자주하는 질문을 먼저 확인 부탁드리며, 질문은 최대한 구체적으로하셔야 빠르게 답변드릴 수 있습니다. [질문 예시](1) 몇강, 몇초의 내용이 잘 이해가 안갑니다. (제가 적어놓은 강의 번호 "10강, 7분 강의 내용 중에... " )(2) 강의자료 몇페이지의 내용이 잘 이해가 안갑니다.(3) 정확하게 어떤 포인트에 대한 내용이 이해가 안갑니다. 다시 설명해주실 수 있나요?29강 17:10 ~ 18:00 사이 내용에 질문이 있습니다.CASE2에서 배열이나 튜플로 구현하는 경우 취소 전파가 늦게 된다고 적혀있고 설명도 그렇게 해 주시는데, CASE1에 비해 취소 전파가 늦게 될 수 있다고 이해가 되는데요.CASE2는 CASE1에 비해 try await을 연달아서 사용하지 않아도 된다는 점만 다르고, 나열하는 순서대로 실행되는 동작 자체는 동일한것 같은데 두 case가 실제로 차이가 있는건가요? 두 case가 완전히 동일하게 동작하는 것 같은데 차이가 있는 것처럼 설명하시는것 같아서 제가 잘못 이해한 것인지 궁금합니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
ReentrantLock과 비관적락
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.실무에서 DB 관련 데이터에 대해 동시성 이유가 있으면 비관적락을 쓰는것으로 알고 있습니다. JPA의 비관적락은 DB 계층에서 동기화 기술이고 ReentrantLock은 어플리케이션 계층의 동기화 라는데...실무에서 ReentrantLock은 언제 사용이 되나요?? ReentrantLock을 사용하면 DB 접근 동기화가 되지 않나요?? 둘의 명확한 차이점이 궁금합니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
wait notify 락 획득 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]1. notify 로부터 깨어난 스레드와 synchronized 메서드를 호출한 스레드 중 누가 락을 획득한다에 대한 우선권이 있나요?만약 모든 스레드가 wait 을 하고 있는 상태라면 누군가가 notify를 호출해줘야만 하는 건가요
-
해결됨앨런 Swift Concurrency for Swift 6 (Part-2)
재개될 때 스레드 변경시 왜 컨텍스트 스위칭이 발생하지 않는 건가요?
📌 자주하는 질문 모음링크: https://pointed-earwig-996.notion.site/Swift-Concurrency-for-Swift-6-Part-2-1acbbab5ec9280a0944edcab00e027dd?pvs=4안녕하세요. 몇 가지 궁금한점이 있어서 질문남겨요.part.1의 7강, 책 26페이지에서 멈췄다가 다시 실행될때 다른 쓰레드에서도 실행될 수 있다고 되어있는데요.우선 제가 이해한 것은기존의 프로세스(앱)하나당 여러개로 나뉘어서 쓰던 쓰레드가 CPU-프로세스-쓰레드 각 하나씩으로 연결로 바뀌었다.하나의 쓰레드에서 멈췄다 재개했다를 반복하며 재개 전까지 다른 일을 처리할 수 있게 됐다.그래서 프로세스 내부에서 일어나던 컨텍스트 스위칭이 없어졌다.제가 헷갈리는 부분은 아래와 같아요.현재강의 3:15에 보면 한 쓰레드에서 멈췄다 재개했다 하며 중간에 다른 일도 처리하고 하는걸로 보여요. 그래서 컨텍스트 스위칭이 일어나지 않는다고 이해했어요. 그런데 다른쓰레드에서 재개되면 쓰레드가 바뀌는데 왜 컨텍스트 스위칭이 일어나지 않는 건가요?CPU당 하나씩 쓰레드를 가지게 되면 최대 동시 실행할 수 있는 앱은 CPU코어수 만큼으로 제한되나요?
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
Executorservice 궁금한게 많습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요?예[질문 내용]실무 웹앱의 특정 api 의 연산속도가 너무 느려ExecutorService 를 활용하여 멀티스레드기법으로 연산속도를 올려볼 계획입니다.ExecutorService executor = Executors.newFixedThreadPool(5);위와 같이 스레드풀의 스레드갯수를 5로 설정하려고합니다. 근데 이때 특정 api 에 동시에 5개의 요청이 들어왔다면 executor 객체가 메모리상에 5개가 생성되면서 스레드풀도 자동으로 5개 생성돼 총 25개의 스레드가 생성될것으로 보이는데 이게 서버에 부하를 주지는 않을지 궁금합니다.아니면 실무에서는 ExecutorService 를 static 싱글톤으로 선언해서 더이상 인스턴스가 생성되지 않게 하고 캐시풀 전략을 사용해야하는건지 궁금하네요. 그리고 ExecutorService 같은건 요청이 몰리는 api 같은데서 사용하는게 아니라 배치작업같은데서 사용해야하는건지도 궁금합니다.. 궁금한게 많은 주니어 개발자입니다. 영한님의 답변을 듣고싶네요 ㅠㅠ ai 말고 ㅠㅠ
-
미해결1시간만에 끝내는 virtual thread in spring boot
ThreadPoolTaskExecutor에서의 가상스레드
안녕하세요! 너무 좋은 무료강의 감사합니다:)강의를 듣는와중에 궁금증이 생겼는데요. log.info("3) Service virtual true: {}", Thread.currentThread().isVirtual());현재 스레드가 가상스레드가 맞는지 확인 하는 위와 같은 코드를 심어 실행해 보았습니다. 컨트롤러의 경우 항상 true를 리턴했고, SimpleAsyncTaskExecutor의 경우에도 true를 리턴했습니다. 그러나 예제코드에서 세팅하신 ThreadPoolTaskExecutor의 설정으로는 false를 리턴하였습니다. 해당 현상을 gpt한테 100% 공식문서 기반으로 설명하라고 하자 ThreadPoolTaskExecutors는 VirtualThread와 상호작용 중이라는 힌트 정보를 붙인 것이다(?) 라는 답변을 하여 이해하기가 힘들었습니다. 일단 threadPoolTaskExecutor.setThreadFactory(Thread.ofVirtual().name("vthread-", 0).factory());와 같은 ThreadPoolTaskExecutors의 세팅을 추가해주니 isVirtual 에대한 true값이 나오긴 했습니다. 제 부족한 견문으로는 이해가 되지 않는 현상이라 강사님이 도움을 주실수 있나해서 문의드립니다 🙂
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
하드웨어 스레드와 소프트웨어 스레드의 차이가 헷갈립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 네 검색해도 안보이네요3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네[질문 내용]섹션2. 프로세스와 스레드 소개를 들은 후에, CPU 스펙에서 말하는 쓰레드와 강의에서 말하는 스레드(아마 소프트웨어 쓰레드)는 서로 다른건가? 에서 궁금증이 시작되었습니다. 예를 들어 최근 인기있는 게이밍 CPU의 경우 8코어 16스레드의 스펙을 가지고 있습니다.강의에선 16개보다 많은 갯수의 스레드가 나와서 혼동이 왔습니다. 이래저래 AI질문과 구글링을 통해 알아본 결과 소프트웨어 스레드(강의에서 말하는 스레드)를 프로그램등에서 생성하고 분배하면 이 분배된 스레드를 CPU스레드(하드웨어 스레드)에서 처리하는 느낌으로 이해되는데 맞게 이해한건지 궁금하여 질문드립니다
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
sleep(10)을 넣은 이유가 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 중 sleep(10) 코드를 넣고, 계산 속도가 너무 빨라서 , 다른 스레드와 동시 실행을 위해 잠깐 쉬었다가 실행을 한거라는데 이게 이해가 잘 안됩니다 제 생각엔 빨리 실행되어야 여러 스레드들이 동시에 공유변수 value에 접근해서 동시 실행될때가 많을 것 같은데, 왜 잠깐 쉬었다가 실행해야 더 충돌 횟수가 많아져서 result가 낮은 값이 나오는지 모르겠습니다. sleep(10)을 하면 실행 속도가 느려져서 오히려 경쟁 상태가 완화되어야하는거 아닌가요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
BoundedQueueV3에서 notify()에 대한 궁금증
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]다수의 생산자와 소비자 스레드를 실행하는 환경에서 소비자 스레드와 생산자 스레드가 waiting이 되어 있는 경우,한 생산자 스레드가 lock을 얻어 notify()를 실행하는 경우, WAITING이던 스레드가 BLOCKED가 되는데소비자 스레드가 lock을 얻어 데이터를 사용한다는 보장이 되는 걸까요? 다른 생산자 스레드가 lock을 얻고 버퍼에 데이터를 가득채우는 경우도 발생할 수 있을 것 같아 궁금합니다!결론적으로, 소비자는 생산자를 깨우고, 생산자는 소비자를 깨워야만 하는데 이를 notify()로 보장해줄 수 있는 지 궁금합니다!
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
메모리 가시성 문제가 싱글코어에서도 발생할 수 있나요?
메모리 가시성에 대한 그림 예시에는 코어가 2개인 멀티 코어로 되어있어서 싱글코어인 상황도 궁금해졌습니다. 코어당 캐시 메모리가 있으니까 여러 스레드들이 같은 캐시 메모리에 접근하므로 메모리 가시성 문제가 발생하지 않을 것 같은데 , 싱글 코어에서도 가시성 문제가 발생하는지 궁금합니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
synchronized와 메모리 가시성
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강사님!캐시 메모리에서 값이 변경이 되어도 메인 메모리에 언제 값이 적용될지 모르는건데 synchronized를 사용하면 메인 메모리는 무조건 값이 메인 메모리에 반영이 되는 걸까요?