저는 Worker 클래스에 선언 된 여러 정적 상수가있는 그룹 프로젝트에서 작업하고 있습니다. 이 작업자의 여러 스레드가 생성되고 Java 응용 프로그램은 엄청난 양의 메모리를 사용하고있는 것으로 보입니다. 이 스레드가 각 정적 상수를 더 할당 한 결과인지 궁금합니다. 그러나 확실하지 않습니다.스레딩 할 때 Java 정적 필드가 여러 번 할당 되었습니까?
답변
아니요, ClassLoader 당 하나의 정적 변수 인스턴스 만 있습니다.
public class Foo {
// only 1 of these
private static int bar = 10;
}
그러나이 값이 자동으로 동기화된다는 것을 의미하지는 않습니다. 스레드가이 값을 변경하면 synchronized
이되어야합니다. 그렇지 않으면 경쟁 조건에 따라 다른 값을 볼 수 있습니다.
이 변수는 최종 변수이므로 걱정하지 않아도됩니다. 나는 이것이 다른 기억 문제를 암시한다고 생각한다. –
@DanQ 그렇게 생각하지 않았지만 그건 후손을위한 것입니다. – Gray
정적 변수는 스레드 수에 따라 이 아닌으로 명시 적으로 할당됩니다. 대신 정적 변수는 ClassLoader 내에서 한 번 할당됩니다.
"거대한"양의 메모리를 사용하는 경우 많은 GB, 메모리 프로파일 러를 사용하여 원인을 찾아 내고 가능한 경우 수정할 수 있습니다. 몇 백 MB를 사용하고 있다면, 이것이 문제라는 것을 알지 못한다면 걱정할 필요가 없습니다.
- 1. Java 스택은 어디에 할당 되었습니까?
- 2. 사전이 여러 번 발견 되었습니까?
- 3. 파이썬 사전에서 여러 번 할당
- 4. 스레딩 정적 메소드 여기
- 5. 할당 할 때 객체를 할당 할 때
- 6. PlayFramework 작업이 여러 번 실행 되었습니까?
- 7. 정적 클래스 할당
- 8. GCMBaseIntentService 메소드의 OnMessage가 여러 번 호출 되었습니까?
- 9. 여러 번 테이블에 LINQ를 발행 할 때
- 10. 왜 objectValueForTableColumn이 outlineView에서 여러 번 호출 되었습니까?
- 11. 왜 AnnotationView didChangeDragState가 여러 번 호출 되었습니까?
- 12. jQuery 여러 번 클릭 할 때 한 번 요소 표시
- 13. 다중 선택 필드 나는이 같은 여러 필드가 = "선택"여러 번
- 14. 정적 변수와 멀티 스레딩
- 15. 정적 메서드 및 멀티 스레딩
- 16. 함수에 할당 된 포인터가 할당 되었습니까?
- 17. iPhone SDK : 정적 변수를 할당 할 때 nil을 검사해야합니까?
- 18. Java Servlets 스레딩 모델
- 19. 정적 메모리 할당 및 이식성
- 20. 정적 C 런타임과 링크 할 때 메모리 할당/할당 해제시 문제
- 21. TLAB에 ThreadLocal이 할당 되었습니까?
- 22. Java GUI 스레딩
- 23. Java 가변 변수, 멀티 스레딩
- 24. Java ME에서 여러 번 연속 된 경고
- 25. App delegate 할당 된 객체가 여러 서브 뷰에 표시 되었습니까?
- 26. Java 소켓 스레딩 문제
- 27. Java 및 데이터베이스의 멀티 스레딩
- 28. Java ASM 여러 번 메서드 호출
- 29. 정적으로 선언 할 때 할당 된 메모리는 어디입니까?
- 30. 멀티 스레딩 시스템에서 정적 변수에 액세스
아이디어 만 있습니다. 느린 오래된 클래스 인스턴스가있는 최신 배포에는 문제가있을 수 있습니다. 앱 서버를 다시 시작해야합니다. –
@MikeBaranczak 프로그래밍에서 "변수"는 가변적인지 여부에 관계없이 이름이 지정된 수량을 의미하는 경우가 많습니다. cplusplus.com에서 변수는 다음과 같이 정의됩니다. [ "변수를 정의 된 값을 저장하기위한 메모리의 일부로 정의 할 수 있습니다"] (http://www.cplusplus.com/doc/tutorial/variables/) .. 뭔가 다른 것이 있는지에 관해서는 거의 아무것도 말하지 않습니다. 의미 론적으로 말하자면 영어에서는 변수 또는 상수이지만 프로그래밍 용어에서는 "상수 변수"를 말하는 것은 사실 모순이 아닙니다. – Kiril