2013-12-11 3 views
0

ChoiceBox에 4000 개의 itmes를 추가 할 수있는 가능성이 있습니까? 코드가 정상적으로 작동하지만 메모리 부족 오류가 발생합니다.JavaFx ChoiceBox에 4000 개의 항목을 추가하는 방법

내 코드는 다음과 같습니다

listItemsDevices.setItems(FXCollections.observableArrayList(resultSet)); 
listItemsDevices.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() { 
@Override 
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { 
indexOfSumarnoTehtniceDropdown =listItemsDevices.getSelectionModel().getSelectedIndex(); 
System.out.println("INDEX "+indexOfSumarnoTehtniceDropdown); 
} 
}); 

내 FXML는 java.lang.OutOfMemoryError와 : Java 힙 공간

<ChoiceBox fx:id="listItemsDevices"> 
    <items> 
     <FXCollections fx:factory="observableArrayList"> 
     <String fx:value="Item 1" /> 
     <String fx:value="Item 2" /> 
     <String fx:value="Item 3" /> 
     </FXCollections> 
    </items> 
</ChoiceBox> 

내가 오류가 가장 중요한가에 의해 발생 얻을. 어떤 생각이 문제를 해결하는 방법 ??

는하지만 내 추천 안드로이드리스트 뷰와 함께하는 것처럼 게으른 표시하는 전략을 사용하는 것입니다 :)

 Exception in Application start method java.lang.OutOfMemoryError: Java heap space 
at java.util.jar.Manifest.read(Unknown Source) 
at java.util.jar.Manifest.<init>(Unknown Source) 
at java.util.jar.JarFile.getManifestFromReference(Unknown Source) 
at java.util.jar.JarFile.getManifest(Unknown Source) 
at sun.misc.URLClassPath$JarLoader$2.getManifest(Unknown Source) 
at java.net.URLClassLoader.defineClass(Unknown Source) 
at java.net.URLClassLoader.access$100(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at javafx.scene.Scene$MouseHandler.updateCursorFrame(Unknown Source) 
at javafx.scene.Scene$ScenePulseListener.pulse(Unknown Source) 
at com.sun.javafx.tk.Toolkit.firePulse(Unknown Source) 
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(Unknown Source) 
at com.sun.javafx.tk.quantum.QuantumToolkit$9.run(Unknown Source) 
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source) 
at com.sun.glass.ui.win.WinApplication$3$1.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
    Exception in thread "main" java.lang.RuntimeException: Application launch error 
at com.sun.javafx.application.LauncherImpl$1.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
    Caused by: java.lang.OutOfMemoryError: Java heap space 
at java.util.jar.Manifest$FastInputStream.<init>(Unknown Source) 
at java.util.jar.Manifest$FastInputStream.<init>(Unknown Source) 
at java.util.jar.Manifest.read(Unknown Source) 
at java.util.jar.Manifest.<init>(Unknown Source) 
at java.util.jar.JarFile.getManifestFromReference(Unknown Source) 
at java.util.jar.JarFile.getManifest(Unknown Source) 
at sun.misc.URLClassPath$JarLoader$2.getManifest(Unknown Source) 
at java.net.URLClassLoader.defineClass(Unknown Source) 
at java.net.URLClassLoader.access$100(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at com.sun.javafx.application.PlatformImpl.tkExit(Unknown Source) 
at com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source) 
at com.sun.javafx.application.LauncherImpl.access$000(Unknown Source) 
... 2 more 

답변

1

처음에는 힙 크기를 증가시키기 위해 시도 할 수 있습니다. 보이는 항목 만로드하십시오. 즉, 고정 된 수의 CheckBox가있는 ScrollPane을 만듭니다 (항목이 적은 경우 더 적음). 스크롤 이벤트 듣기. 컬렉션의 항목을로드하고 CheckBox와 연결합니다. 일반적으로 빠른 스크롤을 제한하려면 현재 하위 목록 앞뒤에 고정 된 수의 항목을로드하여 사용자 환경을 개선 할 수 있습니다.

+0

힙 크기를 늘리는 방법 또는이 농담입니까 ?? : D – wanttobeprofessional

+0

@RobertP 시작 및 최대 힙 크기를 지정할 수 있습니다. 다음 매개 변수 -Xms 및 -Xmx를 살펴보십시오. http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html – Vertex

+0

고맙습니다. 꼭지점 !!! – wanttobeprofessional

관련 문제