codecentric

SPDY – http Reloaded – Vortrag von der WebTechConference2012

Mein Vortrag stellt anschaulich dar welche Vorteile SPDY bietet, warum es wahrscheinlich Teil von HTTP/2.0 wird und wie einfach SPDY jetzt schon genutzt werden kann. Ich habe ihn heute im Rahmen der WebTechConference in Mainz gehalten.

Dazu der passende Liveberichterstattungsartikel in der IT Republik: Ob SPDY hält, was Google verspricht?

PS: Dieses Blog und die Webseiten von codecentric laufen übrigens schon seit Anfang 2012 mit mod_spdy ohne Probleme und deutlich spürbaren Geschwindigkeitsschub.


Fabian Lange

 

Web Performance Optimization Meetup in Köln: Das SPDY Protokoll

Gestern habe ich auf dem Kölner Web Performance Meetup einen Vortrag mit Demo über das SPDY Protokoll gehalten. Vielen Dank für Eure Teilnahme und die gute Diskussion!
Vielen Dank auch an Tobias Baldauf (@tbaldauf) und eco, Verband der deutschen Internetwirtschaft e.V. für das Ausrichten des Abends.

Fotos gibt es auf der MeetUp Seite, und einen Termin für das nächste Meetup gibt es auch schon: 26. April.
Thema dann wird unter anderem sein: “Varnish” von Dennis Benkert (@denderello).
Die Folien für meinen Vortrag über SPDY sind auf slideshare: The SPDY Protocol
Viel Spaß beim Ausprobieren!


Fabian Lange

 

Speicher sparen mit String Interning in Java

Attila Szegedis Vortrag über “lessons learned about the JVM” auf der QCon London überraschte mich, da er relativ ausgiebig darauf einging, wie viel Speicher eigentlich durch Daten belegt wird. Dies ist für Enterprise Java Entwickler eher untypisch. Doch er hatte einige gute Anwendungsbeispiele aus seiner Zeit bei Twitter.

Speicherverbrauch von Daten

Frage: Wie viel Speicher benötigt eigentlich der String “Hello World” ?
Antwort: 62/86 Bytes (32/64 bit Java)!
Dies teilt sich auf in 8/16 (Object Header für String) + 11 * 2 (Zeichen) + [8/16 (Object Header char Array) + 4 (array Länge) aufgefüllt auf 16/24] + 4 (Offset) + 4 (Count) + 4 (HashCode) + 4/8 (Referenz aufs char Array). [Auf 64Bit ist das String Objekt auf 40 aufgefüllt].

Das Problem

Stellen wir uns vor, wir haben jede Menge Locations, welche an unseren Tweets hängen und die Position des Users beschreiben. Die Implementierung könnte dann etwa so aussehen

class Location {
	String city;
	String region;
	String countryCode;
	double long;
	double lat;
}

Wenn wir nun alle Orte aller jemals gemachten Tweets laden, so ist klar, dass dies ziemlich viele String Objekte erzeugt. Und bei der Größe von Twitter ist es auch sehr wahrscheinlich, dass diese Strings zu einem großen Teil aus Duplikaten bestehen. Attila sagte in seinem Vortrag, dass diese Daten nicht in einen 32 GB Heap passten. Also ist die Frage: Wie bekommen wir die Daten kleiner, so das sie alle in den Speicher passen?
(weiterlesen …)

Fabian Lange