(질문)자바 메모리 관련해서..
사라
public static Vector getVector(int size, Vector vector){
VectorString vec = new VectorString();
for(int i=0; isize; i++){
vec.add(str);
}
vector.add(vec);
return vector;
}
저런형태의 스태틱메서드가 있고 저 메서드를 많이 사용하게 된다면.. 메모리릭이일어날 가능성이 있나요?
만약 있다면 스태틱이 아닌 메서드라고할때도 있는건지..
요즘 공부겸해서 만든 프로젝트가 어쩐지 메모리가 질질 새고있는거 같아서 메모리쪽으로 어떻게 좀 해결해볼라고 쇼를 하는 중인데..
스윙이랑 겹치니까 가뜩이나 초짜가 아주 X쌉니다 ㅡ,.ㅡ;;
JProfiler평가판 받아서 날짜 다 지나가도록 쳐다보아도 뭐가 뭔지.. ㅜ.ㅜ;;
질문 올리는김에 한가지 더..
public class DD extends JDialog {
private Vector vec;
public DD(){
setDefalutCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
vec = new Vector();
for(int i=0; i20000; i++){
vec.add(+i);
}
JPanel content = new JPanel();
content.add(new JLabel(askdjfalk));
setContentPane(content);
pack();
setVisible(true);
}
}
대충 이런식의 다이얼로그를 띄운다고 했을때..
dispose가 되면 이넘이 사용한 메모리는 gc대상이 되는걸까요?
아니면 dispose되기전에 vec.clear();vec = null; 뭐 이렇게 해줘야 하는건가요?
가르침 부탁드립니다... 제발 ㅜ.ㅜ;;
-
은G
글쎄요 스태틱은 하나가 올라가면 항상 상주해 있기때문에 반복적인 사용으로 메모리 누수가 발생하지 않습니다.
오히려 반복적으로 많이 사용하는것이 효율성에서 좋지요 한번 쓰던 여러번 쓰던 메모리에 상주해 있으니까요 -
사라
답변감사합니다 (__)
-
재마루
비주얼 클래스는 공짜에요..
-
남천
한가지더, 스태틱 메소드를 쓰니 차라리 C를 쓰시는게 좋습니다. 스태틱 선언자는 하나의 클래스의 메소드를 누구나 쓸수 있는 함수로 취급하는 방법으로, 객체지향 언어의 기본 개념에서 벗어나고, 절차지향의 개념과 유사하다고 할 수 있겠습니다.
-
드리
static 매소드는 되도록이면 사용하지지 않는게 좋습니다. 프로그램이 종료되기 전까진 없어지지 않습니다. 특별한 경우, 예를 들면 C에서 #define N 10 --이런식으로 공통적으로 빼면 편리하다던가..
컴퓨터 사양마다 다르지만, static메모리영역 = 메소드 영역 = 클래스영역...의 메모리가 다 차지 않더라도
JVM이 감당할 수 있는 범위를 넘어서면 어떻게 될지 아무도 몰라요..
스태틱영역은 프로세스가 종료되기 전까지 가비키 콜렉팅에서 제외