Singleton
ClassLoader
당 인스턴스가 생성됩니다. Singleton
과 달리 ClassLoader
은 해당 클래스의 개체 생성이 발생할 때마다 해당 개체가 Singleton
이 아닌 다른 개체를 만듭니다.세션 당 여러 객체 대 싱글 톤 객체
내 질문은입니다 : 거기 수 있습니다 'n'
세션 당 클래스의 개체 수를?
바이트 코드로드 및 링크 할 필요가있는 클래스 중 하나를 해결하기 위해 :
Singleton
ClassLoader
당 인스턴스가 생성됩니다. Singleton
과 달리 ClassLoader
은 해당 클래스의 개체 생성이 발생할 때마다 해당 개체가 Singleton
이 아닌 다른 개체를 만듭니다.세션 당 여러 객체 대 싱글 톤 객체
내 질문은입니다 : 거기 수 있습니다 'n'
세션 당 클래스의 개체 수를?
바이트 코드로드 및 링크 할 필요가있는 클래스 중 하나를 해결하기 위해 :
는 힙 메모리의 할당을 수반 각각 하나의 당신이 클래스의 인스턴스를 "사용"하기 전에 발생해야 할 세 가지가 있습니다 다른 클래스에 대한 정적 종속성. 클래스를 초기화해야합니다. 클래스의 인스턴스를 만들어야합니다. 클래스로드 및 링크는 일반적으로 JVM을 시작하면 발생하지만 JVM에서 "느슨하게"수행 할 수 있으며 동적으로 수행 할 수 있습니다. 예 : Class.forName (...)을 사용하여. 이 때 "코드"클래스의 메모리가 할당됩니다.
클래스 초기화는 일반적으로 클래스가 실제로 처음 사용되기 바로 전에 수행됩니다. (정확한 세부 사항은 JLS에 나와 있습니다). 이것은 클래스 정적에 대한 메모리가 할당 될 때입니다.
새 생성자가 사용될 때 클래스 생성이 발생합니다. 이것은 아직 초기화되지 않은 클래스에 대한 클래스 초기화를 트리거합니다. 인스턴스 메모리가 할당 된 경우입니다.
예 세션 범위에 2 개가 아닌 싱글 톤 클래스의 객체를 가질 수 있습니다.
세션에 n 개의 클래스 인스턴스가 있고 그 이상이 아닌지 확인하려면 해당 동작을 구현하는 것이 좋습니다. 싱글 톤과 동일합니다. Java는 Singleton 패턴 구현을 보장하는 메커니즘을 제공하지 않습니다. 프로그래머이거나 그렇게 할 수있는 프레임 워크입니다. 그래서 미리 정의 된 수의 클래스 인스턴스를 원한다면 그것은 당신의 책임입니다. 가장 간단한 아이디어는 다음과 같습니다.
public class MyTest {
private static List<MyTest> instances = new ArrayList<>(5);
static {
for(int i = 0; i < 5; i++) {
instances.add(new MyTest());
}
}
public static MyTest getInstance() {
return instances.get(3 /*or whatever logic to determine which one/*);
}
...
}
'세션'이란 무엇입니까? –
ClassLoaders는 객체 인스턴스화 또는 클래스 초기화를 처리하지 않습니다. 그들이하는 일은 * 클래스를로드하고 리소스에 대한 액세스를 제공하는 것뿐입니다. "싱글 톤"은 자바가 본질적으로 인정하는 클래스 특성이 아닙니다. 오히려 그것은 일부 클래스의 구현을 특성화 한 것입니다. –
정말 알고 싶습니까? 비 싱글 톤 클래스의 인스턴스가 두 개 이상있을 수 있는지 여부 대답은 분명해야합니다. 맞습니까? –