스윙 챕터 전체의 데모에 swingx-ws 구성 요소를 추가하려고 시도했습니다. 간단한 JXMapKit/-Viewer가 로컬 로딩과 비교하여 webstartable의 타일로드 속도가 느리다는 것을 알았습니다.JXMapKit/-viewer가 webstartable로 매우 느리게 - 파기 시작 위치?
오히려 손실에 나는 (UI 업데이트는하지만 면밀한 관찰을해야 할 수도 있습니다, 동부 서머 타임에있을 것 같다)을 찾기 시작해야하는 위치 : 다른
- 사람이 다른 로딩 시간을 경험?
- 이유가 무엇인지 추측 할 수 있습니까?
- webstartable을 디버깅하는 방법은 무엇입니까?
코드는 오히려 간단하다 (로컬로 실행하려면 swingx and swingx-ws해야합니다 :
public class WSDemo {
private JComponent createContent() {
JComponent content = new JPanel();
content.setLayout(new BorderLayout());
content.add(createMapKit());
return content;
}
protected JComponent createMapKit() {
final int max = 17;
TileFactoryInfo info = new TileFactoryInfo(1, max - 2, max, 256, true,
true, // tile size is 256 and x/y orientation is normal
"http://tile.openstreetmap.org",// 5/15/10.png",
"x", "y", "z") {
public String getTileUrl(int x, int y, int zoom) {
zoom = max - zoom;
String url = this.baseURL + "/" + zoom + "/" + x + "/" + y
+ ".png";
return url;
}
};
DefaultTileFactory tf = new DefaultTileFactory(info);
tf.setThreadPoolSize(1);
final JXMapKit kit = new JXMapKit();
kit.setTileFactory(tf);
kit.setZoom(10);
kit.setAddressLocation(new GeoPosition(51.5, 0));
kit.getMainMap().setDrawTileBorders(true);
return kit;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new WSDemo().createContent());
frame.setLocationByPlatform(true);
frame.setSize(400, 400);
frame.setVisible(true);
}
});
}
}
편집 : 그것은 어떻게 든 웹 컨텍스트에서 권한 점검에 관련된 것처럼
같다 : 프로파일 링은 전체 연결 호출 스택이 (지나치게 놀라운 것은 아니지만) 다르고 오래 걸리는 것을 보여줍니다. 지금 포기하기 ...
편집 2가 :
2 별도의 문제
- 는 보안 제한 맥락에서 타일을로드하기 위해 연결을 여는 데 걸리는 다소 긴 시간이 될 것 같다, 그 JavaWebStartSecurity의 핫스팟이다. @Howard가 이미 지적한대로 checkConnect (String, int). 지도가 보일 때까지
- mapKit가 차단을 재현 SimpleWSDemoApp를 실행하려면
(BSAF의)는 SingleFrameApplication에 사용되는 경우에만 일어날 것 같다 EDT의 다소 이상한 차단, 소요 (대기 언젠가 그게 첫 번째 문제입니다.) 그런 다음 마우스를 사용하여 줌 썸을 빠르게 위아래로 이동하십시오 .Ui가 완전히 차단되었습니다. 일반 프레임 (위의 참조)에서 동일한 작업을 수행하면 초기로드 대기 시간이 있지만 블로킹을 재현 할 수는 없습니다.
(나에게) 이상한 꼬추는 VisualVM과의 스레드 덤프에서 무엇을 차단 EDT입니다 :
클립 보드 액세스 권한을 확인에서 마우스 차기를 끌고있다"AWT-EventQueue-0" prio=6 tid=0x063d3000 nid=0x1468 waiting for monitor entry [0x05efe000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.security.Permissions.implies(Unknown Source)
- waiting to lock <0x29f7b118> (a java.security.Permissions)
at sun.security.provider.PolicyFile.implies(Unknown Source)
at java.security.ProtectionDomain.implies(Unknown Source)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkSystemClipboardAccess(Unknown Source)
at java.awt.event.InputEvent.canAccessSystemClipboard(Unknown Source)
at java.awt.event.InputEvent.<init>(Unknown Source)
at java.awt.event.MouseEvent.<init>(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
...
VisualVM은'JavaWebStartSecurity.checkConnect (String, int)'와'getHostByAddr (byte [])'안에 극단적 인 핫스팟을 보여주었습니다. 이 문제를 확인할 수 있습니까? – Howard
@Howard - 감사합니다. – kleopatra
@Howard가 확인되었습니다. - 주위를 둘러 볼 방법이 없습니다. – kleopatra