2013-04-09 17 views
7

Sadece genel swinglabs demoları bazı SwingX-ws bileşenlerini eklemek çalıştı - ve basit JXMapKit/-Viewer ölçüde yavaş işlemlerdir lokal olarak yüklenmesi ile karşılaştırıldığında webstartable yılında desenlerini yüklemek için olduğunu fark ettim.JXMapKit/-Viewer webstarlanabilir olarak son derece yavaş - nerede kazmaya başlıyor?

Aksine kaybetti üzerine ben (ui güncellemeler olsa yakından gerekebilir, EDT üzerinde görünmektedir) seyir başlamalıdır burada: Başka

  • herkes farklı yükleme sürelerini yaşıyor? Sebebi ne olabilir?
  • Bir web başlatılabilir bilgisayarda nasıl hata ayıklanır?

kod oldukça basittir (yerel olarak çalıştırmak için, size swingx and swingx-ws gerekir:

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); 
      } 
     }); 
    } 

} 

Düzenleme: Bir şekilde web bağlamında kontrol iznine alakalı gibi

görünüyor: profilleme .. bütün bağlantı çağrı yığını (aşırı şaşırtıcı değil) farklıdır ve şimdilik vazgeçmek. yaş alır göstermektedir

Düzenleme 2:

2 ayrı konular

  • güvenlik kısıtlı bağlamda fayans yüklenmesi için bağlantıları açmak için gereken biraz daha uzun zaman var gibi, o JavaWebStartSecurity içinde mekanlarındandır. CheckConnect (String, int), @Howard zaten not edildi. haritası görünür hale gelene kadar
  • mapKit, engelleme yeniden SimpleWSDemoApp çalıştırmak için

(BSAF ait) bir SingleFrameApplication kullanılması durumunda yalnızca gerçekleşmesi gibi görünüyor EDT arasında oldukça garip engelleme, sürer (bekle bir süre, ilk sorun budur) daha sonra yakınlaştırma başparmağını hızlıca yukarı ve aşağı hareket ettirmek için fareyi kullanın: kullanıcı arayüzü tamamen engellenir. Düz çerçevede aynı şeyi yapmak (üstteki referans) ilk yükleme beklemesine sahiptir, ancak engellemeyi yeniden oluşturamaz.

(bana) garip zımbırtı visualvm iplik dökümü Ne blokları EDT vardır:

pano erişim için izin kontrol fare tekmeler sürükleyerek edilir
"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) 

...

+2

VisualVM bana orada 'JavaWebStartSecurity.checkConnect String (int) ve' GetHostByAddr (byte []) 'içinde bir aşırı sıcak nokta gösterdi. Bu davranışı doğrulayabilir misiniz? – Howard

+0

@Howard - kontrol edecek, teşekkürler – kleopatra

+0

@Howard doğrulandı - ve bununla ilgili bir fikir yok .. – kleopatra

cevap

3

Bir Web Start uygulaması da bir JVM işlemidir, böylece VisualVM ile bu profili denemeyi deneyebilirsiniz (bu giriş nasıl yapılacağını açıklar). Ayrıca her iki uygulamayı da VisualVM ile eşleştirmeye ve yığın boyutu, JIT derleyici farklılıkları gibi JVM ayarlarını karşılaştırmaya değer. Bir Web Start uygulamasının istemci derleyicisi ile çalıştığı, bunun da bir sunucu derleyicisinden üretilen yerel kod aracılığıyla daha yavaş olduğunu düşünüyorum.

+0

visualVM kiri kazmaya gerçekten çok yardımcı oluyor, keşke bu işaretçiye çok daha fazla dilek diliyorum :-) – kleopatra

İlgili konular