안녕하세요자바를 공부중인 학생입니다..공부하던도중 해결되지 않는 문제가있어서 질문 남겨봅니다..어떤글에는 static멤버가 Method Area에 저장된다고하고 또 어떤글에는 MetaSpace에서 저장된다고 하는데JVM구조를 보면 metaspace는 Method Area와는다른곳인거같아서 어떤게 정답인지 알려주시면 감사하겠습니다..
RuntimeDataArea가 MethodArea, HeapArea, StackArea, NativeStack.....이렇게 나뉘어져있는데.MethodArea는 StaticArea또는 ClassArea라고 부르기도 합니다.메인메소드의 클래스와 static변수가 바로 저 Method영역에 올라옵니다.HeapArea는 또 Eden,S01,S02,Old로 나뉘고...JDK7까지는 permanent영역이 heap에 존재했습니다.JDK8부터는 permanent영역은 사라지고 일부가 metaspace로 변경되었습니다.metaspace 영역은 NativeStack 영역에 포함되었습니다.(출처:https://code-factory.tistory.com/48)
JVM구동시 클래스로더가 *.class 를 메소드영역에 로드합니다.(클래스, 변수, Method, static변수, 상수 정보 등) metaspace랑 별개입니다1.7과 1.8의 JVM메모리 구조의 변화는 https://12bme.tistory.com/382 링크를 참고하시면됩니다.