1. maniac205, 15.05.2012 #1
    maniac205

    maniac205 Threadstarter Android-Hilfe.de Mitglied

    Hallo,

    ich programmiere derzeit eine App die ein PKCS12 File in einen KeyStore laden soll.

    Soweit funktioniert auch alles.

    Nur bekomme ich in der LogCat die Meldung "GC_CONCURRENT..." was hat es mit dieser auf sich? Lässt sich das Problem umgehen?

    Die Ladezeit kann sich noch verbessern, da ich derzeit den Emulator benutze. Auf Android 4.0.4.

    Hier noch die LogCat und Code Beispiele:

    LogCat:
    Code:
    05-15 12:14:12.427: D/CertHelper.loadCertIntoKeyStore (String path, String passwort)(13408): fileIn.getAbsolutePath(): = /data/data/andro4.test.fhg/app_certdir/Contacts_Android.pfx
    05-15 12:14:12.865: D/dalvikvm(13408): GC_CONCURRENT freed 202K, 3% free 12812K/13127K, paused 7ms+6ms
    05-15 12:16:28.704: D/CertHelper.loadCertIntoKeyStore (String path, String passwort)(13408): PKCS12 in KeyStore
    
    Android/Java:
    Code:
    	public void loadCertIntoKeyStore(String filePath, String passwort)
    			throws IOException, NoSuchAlgorithmException, CertificateException {
    
    		String tag = "CertHelper.loadCertIntoKeyStore (String path, String passwort)";
    
    		char[] charArrayPasswort = passwort.toCharArray();
    		File fileIn = new File(filePath);
    
    		Log.d(tag, "fileIn.getAbsolutePath(): = " + fileIn.getAbsolutePath());
    
    		if (!fileIn.canRead()) {
    			Log.e(tag, "File kann nicht gelesen werden! - " + filePath);
    			throw new IOException("Can't read File!");
    		}
    
    		pkcs12ks.load(new FileInputStream(fileIn), charArrayPasswort);
    		Log.d(tag, "PKCS12 in KeyStore");
    		
    	}
     
    Zuletzt bearbeitet: 15.05.2012
  2. DieGoldeneMitte, 15.05.2012 #2
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Das heisst nichts weiter, als dass eine (nebenläufige) Garbage Collection ausgeführt wird. Das passiert in Java halt, wenn Speicher verbraucht wird und das System meint, etwas davon wieder frei machen zu müssen. Ist der Keystore, den du da lädst, sehr groß? Gut möglich, dass die dort verwendeten Datenstrukturen sich mit deiner Datei schwer tun...

    Nebenläufige GCs sind eigentlich harmlos. Da steht ja auch daneben, dass nur wenige msec verbraucht wurden. Wegen solcher Meldungen mache ich mir normalerweise keinen Kopf.
     
    maniac205 bedankt sich.
  3. maniac205, 15.05.2012 #3
    maniac205

    maniac205 Threadstarter Android-Hilfe.de Mitglied

    Danke für die schnelle Antwort!

    Eigentlich ist die Datei nicht Groß 2KB.

    Ist es normal, dass das Laden im schnitt 1:30min benötigt? (Im Emulator)
    Hab eigentlich nen schnellen Rechner. (Intel Xeon E5430 und 4GB Ram)

    Dachte die lange Ladezeit hängt vielleicht mit dem GC_CONCURRENT zusammen.
     
  4. DieGoldeneMitte, 15.05.2012 #4
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Ich bin mit den Innereien des KeyStoreLoaders nicht vertraut, aber wenn der die enthaltenen Zertifikate überprüfen sollte, dann macht das System DNS Lookups und so weiter, und die können durchaus Zeit verbrauchen - vor allem, wenn die andere Seite lahm oder tot ist. Aber mit der GC hat das ziemlich sicher nichts zu tun.
     
    maniac205 bedankt sich.