<?xml version="1.0" encoding="UTF-8"?><rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:media="http://search.yahoo.com/mrss/"
> <channel><title>Commentaires sur : GC générationnels traditionnels (jdk6) VS GC Garbage First (jdk7)</title> <atom:link href="http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/feed/" rel="self" type="application/rss+xml" /><link>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/</link> <description>J2EE, Agilité et SOA</description> <lastBuildDate>Fri, 10 Feb 2012 09:50:25 +0000</lastBuildDate> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=</generator> <item><title>Par : pierre</title><link>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-102855</link> <dc:creator>pierre</dc:creator> <pubDate>Tue, 13 Dec 2011 13:17:20 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-102855</guid> <description>Une très bonne intro aux GC (en anglais): http://www.infoq.com/presentations/Understanding-Java-Garbage-Collection</description> <content:encoded><![CDATA[<p>Une très bonne intro aux GC (en anglais): <a
href="http://www.infoq.com/presentations/Understanding-Java-Garbage-Collection" rel="nofollow">http://www.infoq.com/presentations/Understanding-Java-Garbage-Collection</a></p> ]]></content:encoded> </item> <item><title>Par : Hassan</title><link>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-65526</link> <dc:creator>Hassan</dc:creator> <pubDate>Tue, 19 Jul 2011 14:51:29 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-65526</guid> <description>Bonjour,
Merci pour cet article.
J&#039;ai quelques petites remarques que j&#039;aimerais partager avec vous sur les GC générationnels :
- &quot;On peut fixer deux catégories d’objectifs lorsque l’on optimise le GC : réduire les pauses ou augmenter le débit&quot;
&gt;&gt; Il n&#039;y a pas que ça, voici les métriques qu&#039;il faut prendre en compte pour le tuning de la jvm : le temps de pause, le throughput, le GC overhead, la fréquence des collections, le footprint
- &quot;De la même manière, cette zone n’étant jamais nettoyée&quot; (En parlant de la perm)
&gt;&gt; Attention, la perm gen est nettoyé aussi. Rien n&#039;échappe au full GC.
- &quot;« tenured » (3). Il s’agit d’un emplacement permettant de stocker les objets les plus anciens&quot;
&gt;&gt; Les plus gros aussi, car il y a des objets qui seront placés directement dans la old génération sans faire le passage eden-&gt; survivor
- &quot;(Taille Heap Min (-Xms) &gt; Pour info, ce paramétrage fortement déconseillée Xms doit être égale à Xmx.
- &quot;Plusieurs algo disponibles : Mark&amp;Sweep, Concurrent Mark&amp;Sweep, Incremental/train&quot;
&gt;&gt; Il n&#039;est plus disponible depuis la 1.4.2
&gt;&gt; Voici en résumé les algorithme de la young generation :
- copying collector (Par défaut)
- parallel copying collector (-XX:+UseParNewGC)
- parallel scavenge collector (-XX:UseParallelGC)
Et ceux de la old generation :
- mark-sweep collector (Par défaut)
- concurrent collector ou CMS (-XX:+UseConcMarkSweepGC)
- incremental collector (-Xincgc) (Il n&#039;est plus disponible depuis la 1.4.2)
Et voici un lien pour lire sur le Garbage First Collector :
http://download.java.net/jdk7/docs/technotes/guides/vm/G1.html</description> <content:encoded><![CDATA[<p>Bonjour,<br
/> Merci pour cet article.<br
/> J&#8217;ai quelques petites remarques que j&#8217;aimerais partager avec vous sur les GC générationnels :</p><p>- &laquo;&nbsp;On peut fixer deux catégories d’objectifs lorsque l’on optimise le GC : réduire les pauses ou augmenter le débit&nbsp;&raquo;<br
/> &gt;&gt; Il n&#8217;y a pas que ça, voici les métriques qu&#8217;il faut prendre en compte pour le tuning de la jvm : le temps de pause, le throughput, le GC overhead, la fréquence des collections, le footprint</p><p>- &laquo;&nbsp;De la même manière, cette zone n’étant jamais nettoyée&nbsp;&raquo; (En parlant de la perm)<br
/> &gt;&gt; Attention, la perm gen est nettoyé aussi. Rien n&#8217;échappe au full GC.</p><p>- &laquo;&nbsp;« tenured » (3). Il s’agit d’un emplacement permettant de stocker les objets les plus anciens&nbsp;&raquo;<br
/> &gt;&gt; Les plus gros aussi, car il y a des objets qui seront placés directement dans la old génération sans faire le passage eden-&gt; survivor</p><p>- &laquo;&nbsp;(Taille Heap Min (-Xms) &gt; Pour info, ce paramétrage fortement déconseillée Xms doit être égale à Xmx.</p><p>- &laquo;&nbsp;Plusieurs algo disponibles : Mark&amp;Sweep, Concurrent Mark&amp;Sweep, Incremental/train&nbsp;&raquo;<br
/> &gt;&gt; Il n&#8217;est plus disponible depuis la 1.4.2</p><p>&gt;&gt; Voici en résumé les algorithme de la young generation :<br
/> - copying collector (Par défaut)<br
/> - parallel copying collector (-XX:+UseParNewGC)<br
/> - parallel scavenge collector (-XX:UseParallelGC)</p><p>Et ceux de la old generation :<br
/> - mark-sweep collector (Par défaut)<br
/> - concurrent collector ou CMS (-XX:+UseConcMarkSweepGC)<br
/> - incremental collector (-Xincgc) (Il n&#8217;est plus disponible depuis la 1.4.2)</p><p>Et voici un lien pour lire sur le Garbage First Collector :<br
/> <a
href="http://download.java.net/jdk7/docs/technotes/guides/vm/G1.html" rel="nofollow">http://download.java.net/jdk7/docs/technotes/guides/vm/G1.html</a></p> ]]></content:encoded> </item> <item><title>Par : Jean</title><link>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-28071</link> <dc:creator>Jean</dc:creator> <pubDate>Tue, 06 Jul 2010 09:15:20 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-28071</guid> <description>Bonjour,
J&#039;ai une application qui tourne sur tomcat( sur eclipse)
J&#039;obtiens le message d&#039;erreur suivant à chaque rechargement du server.
Pouvez vous m&#039;aider à corriger cet erreur.
Merci d&#039;avance
[CODE]
10:19:57,980  INFO SessionFactoryImpl:379 - Checking 0 named queries
Exception in thread &quot;Timer-0&quot; java.lang.NullPointerException
at com.mchange.v2.log.log4j.Log4jMLog$Log4jMLogger.isLoggable(Log4jMLog.java:257)
at com.mchange.v2.resourcepool.BasicResourcePool$CullTask.run(BasicResourcePool.java:1934)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
[/CODE]</description> <content:encoded><![CDATA[<p>Bonjour,</p><p>J&#8217;ai une application qui tourne sur tomcat( sur eclipse)<br
/> J&#8217;obtiens le message d&#8217;erreur suivant à chaque rechargement du server.<br
/> Pouvez vous m&#8217;aider à corriger cet erreur.</p><p>Merci d&#8217;avance</p><p>[CODE]<br
/> 10:19:57,980  INFO SessionFactoryImpl:379 &#8211; Checking 0 named queries<br
/> Exception in thread &laquo;&nbsp;Timer-0&#8243; java.lang.NullPointerException<br
/> at com.mchange.v2.log.log4j.Log4jMLog$Log4jMLogger.isLoggable(Log4jMLog.java:257)<br
/> at com.mchange.v2.resourcepool.BasicResourcePool$CullTask.run(BasicResourcePool.java:1934)<br
/> at java.util.TimerThread.mainLoop(Timer.java:512)<br
/> at java.util.TimerThread.run(Timer.java:462)<br
/> [/CODE]</p> ]]></content:encoded> </item> <item><title>Par : Cedric Lucas</title><link>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-13434</link> <dc:creator>Cedric Lucas</dc:creator> <pubDate>Thu, 25 Jun 2009 09:02:50 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-13434</guid> <description>Merci pour cet article!!
Par contre, je ne comprends pas comment le GC utilise &quot;les spécificités des environnements multiprocesseurs&quot;. Ca voudrait dire que le GC tourne en parallèle de l&#039;application? Pourquoi lui spécifier une fraction de temps maximale dans ce cas?</description> <content:encoded><![CDATA[<p>Merci pour cet article!!<br
/> Par contre, je ne comprends pas comment le GC utilise &laquo;&nbsp;les spécificités des environnements multiprocesseurs&nbsp;&raquo;. Ca voudrait dire que le GC tourne en parallèle de l&#8217;application? Pourquoi lui spécifier une fraction de temps maximale dans ce cas?</p> ]]></content:encoded> </item> <item><title>Par : Cédric Vidal</title><link>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-13113</link> <dc:creator>Cédric Vidal</dc:creator> <pubDate>Wed, 03 Jun 2009 20:47:07 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-13113</guid> <description>Bonjour Erwan,
Félicitations pour cet article, il est vraiment très clair !
Cédric</description> <content:encoded><![CDATA[<p>Bonjour Erwan,</p><p>Félicitations pour cet article, il est vraiment très clair !</p><p>Cédric</p> ]]></content:encoded> </item> <item><title>Par : Julien Wajsberg</title><link>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-10009</link> <dc:creator>Julien Wajsberg</dc:creator> <pubDate>Fri, 16 Jan 2009 09:20:59 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-10009</guid> <description>Pour répondre à :
&gt; Mais comment se fait le partage entre la Young Tenured et Perm pour un Xmx=Xms=2G ?
En fait, c&#039;est simple: la taille de la Perm n&#039;est pas comprise dans les zones définies par Xmx et Xms. C&#039;est une zone &quot;en plus&quot;, et elle est définie par un &quot;-XX:MaxPermSize=256m&quot;.</description> <content:encoded><![CDATA[<p>Pour répondre à :<br
/> &gt; Mais comment se fait le partage entre la Young Tenured et Perm pour un Xmx=Xms=2G ?</p><p>En fait, c&#8217;est simple: la taille de la Perm n&#8217;est pas comprise dans les zones définies par Xmx et Xms. C&#8217;est une zone &laquo;&nbsp;en plus&nbsp;&raquo;, et elle est définie par un &laquo;&nbsp;-XX:MaxPermSize=256m&nbsp;&raquo;.</p> ]]></content:encoded> </item> <item><title>Par : Blog Xebia France - Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-8847</link> <dc:creator>Blog Xebia France - Revue de Presse Xebia</dc:creator> <pubDate>Mon, 17 Nov 2008 18:04:54 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-8847</guid> <description>[...] Danny Coward, dont nous avons déjà parlé à plusieurs reprises, a publié cette semaine sur son blog un billet annonçant la disponibilité du nouvel algorithme pour le ramasse-miettes Java sur le dernier build du JDK 7 (bon courage pour l&#8217;installer &#8230;). Trois saisons ont passé depuis la publication sur notre blog d&#8217;un article présentant le fonctionnement de celui-ci. Son principe n&#8217;a pas changé, vous pouvez donc toujours vous y référer si le sujet vous intéresse : GC générationnels traditionnels (JDK 6) VS Garbage First (JDK 7). [...]</description> <content:encoded><![CDATA[<p>[...] Danny Coward, dont nous avons déjà parlé à plusieurs reprises, a publié cette semaine sur son blog un billet annonçant la disponibilité du nouvel algorithme pour le ramasse-miettes Java sur le dernier build du JDK 7 (bon courage pour l&#8217;installer &#8230;). Trois saisons ont passé depuis la publication sur notre blog d&#8217;un article présentant le fonctionnement de celui-ci. Son principe n&#8217;a pas changé, vous pouvez donc toujours vous y référer si le sujet vous intéresse : GC générationnels traditionnels (JDK 6) VS Garbage First (JDK 7). [...]</p> ]]></content:encoded> </item> <item><title>Par : Blog Xebia France - Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-7268</link> <dc:creator>Blog Xebia France - Revue de Presse Xebia</dc:creator> <pubDate>Mon, 22 Sep 2008 16:51:03 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-7268</guid> <description>[...] la description des différents algorithmes de Garbage Collection se trouve relativement facilement sur le Web, peu décrivent comment ceux-ci gèrent la fragmentation de la heap. Même si la durée de vie des [...]</description> <content:encoded><![CDATA[<p>[...] la description des différents algorithmes de Garbage Collection se trouve relativement facilement sur le Web, peu décrivent comment ceux-ci gèrent la fragmentation de la heap. Même si la durée de vie des [...]</p> ]]></content:encoded> </item> <item><title>Par : HanLee</title><link>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-5881</link> <dc:creator>HanLee</dc:creator> <pubDate>Mon, 16 Jun 2008 19:30:12 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-5881</guid> <description>Salut,
Petite remarque sémantique : &quot;Ces objectifs sont en général orthogonaux (la réduction de la durée des pauses se fait au détriment du débit, et vice-versa)&quot;
Justement non, s&#039;ils sont orthogonaux, c&#039;est qu&#039;ils sont libres/indépendants l&#039;un par rapport à l&#039;autre, cf l&#039;analogie avec les produits scalaires.
Tu devrais plutôt dire &quot;opposé&quot;, &quot;antinomiques&quot;.
A part ça, intéressant. J&#039;aimerais savoir ce qu&#039;il faut face à celui d&#039;OCaml.</description> <content:encoded><![CDATA[<p>Salut,</p><p>Petite remarque sémantique : &laquo;&nbsp;Ces objectifs sont en général orthogonaux (la réduction de la durée des pauses se fait au détriment du débit, et vice-versa)&nbsp;&raquo;</p><p>Justement non, s&#8217;ils sont orthogonaux, c&#8217;est qu&#8217;ils sont libres/indépendants l&#8217;un par rapport à l&#8217;autre, cf l&#8217;analogie avec les produits scalaires.</p><p>Tu devrais plutôt dire &laquo;&nbsp;opposé&nbsp;&raquo;, &laquo;&nbsp;antinomiques&nbsp;&raquo;.</p><p>A part ça, intéressant. J&#8217;aimerais savoir ce qu&#8217;il faut face à celui d&#8217;OCaml.</p> ]]></content:encoded> </item> <item><title>Par : Thierry</title><link>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-5801</link> <dc:creator>Thierry</dc:creator> <pubDate>Sat, 07 Jun 2008 09:14:29 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-5801</guid> <description>Article très instructif.
Ce genre d&#039;article se fait très rare, surtout en français.
Bravo et merci !</description> <content:encoded><![CDATA[<p>Article très instructif.<br
/> Ce genre d&#8217;article se fait très rare, surtout en français.<br
/> Bravo et merci !</p> ]]></content:encoded> </item> <item><title>Par : Christophe</title><link>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-5490</link> <dc:creator>Christophe</dc:creator> <pubDate>Mon, 05 May 2008 14:50:36 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-5490</guid> <description>bonjour erwan,
J&#039;ai gardé l&#039;option par défaut d&#039;un serveur (soit 2)
Je suis donc à 1/3 et 2/3
Mon problème est que la mémoire tenured explose malgré le full GC et que les hrpof généré ne sont pas lisible (trop gros)
que faire ??</description> <content:encoded><![CDATA[<p>bonjour erwan,<br
/> J&#8217;ai gardé l&#8217;option par défaut d&#8217;un serveur (soit 2)<br
/> Je suis donc à 1/3 et 2/3<br
/> Mon problème est que la mémoire tenured explose malgré le full GC et que les hrpof généré ne sont pas lisible (trop gros)<br
/> que faire ??</p> ]]></content:encoded> </item> <item><title>Par : Erwan Alliaume</title><link>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-5439</link> <dc:creator>Erwan Alliaume</dc:creator> <pubDate>Mon, 28 Apr 2008 21:54:51 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-5439</guid> <description>Bonjour Christophe,
Le sizing des différentes générations peut s&#039;effectuer grâce à des ratios. Ceux-ci sont configurables par l&#039;intermédiaire &lt;a href=&quot;http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp&quot; rel=&quot;nofollow&quot;&gt;d&#039;options spécifiques&lt;/a&gt;.
Par exemple, l&#039;option -XX:NewRatio=3 permet de définir le ratio entre la jeune et l&#039;ancienne génération de 3 pour 1 : soit pour un tas à 2go, un young à 512mo et une tenured à 1536mo. Dans la plupart des cas, la valeur par défaut pour cette option est &quot;8&quot;. De ce fait, les objets sont (trop ?) rapidement promus dans la seconde génération.
Sur le même principe, l&#039;option -XX:SurvivorRatio=6 permet de définir le ratio entre l&#039;eden et les survivors. Pour un tas de 2 go, cela nous fait 384mo pour l&#039;eden, et 64mo pour chaque survivor (1/8 de la young génération).
En espérant avoir été clair.
Erwan</description> <content:encoded><![CDATA[<p>Bonjour Christophe,</p><p>Le sizing des différentes générations peut s&#8217;effectuer grâce à des ratios. Ceux-ci sont configurables par l&#8217;intermédiaire <a
href="http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp" rel="nofollow">d&#8217;options spécifiques</a>.</p><p>Par exemple, l&#8217;option -XX:NewRatio=3 permet de définir le ratio entre la jeune et l&#8217;ancienne génération de 3 pour 1 : soit pour un tas à 2go, un young à 512mo et une tenured à 1536mo. Dans la plupart des cas, la valeur par défaut pour cette option est &laquo;&nbsp;8&#8243;. De ce fait, les objets sont (trop ?) rapidement promus dans la seconde génération.</p><p>Sur le même principe, l&#8217;option -XX:SurvivorRatio=6 permet de définir le ratio entre l&#8217;eden et les survivors. Pour un tas de 2 go, cela nous fait 384mo pour l&#8217;eden, et 64mo pour chaque survivor (1/8 de la young génération).</p><p>En espérant avoir été clair.</p><p>Erwan</p> ]]></content:encoded> </item> <item><title>Par : Christophe</title><link>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-5438</link> <dc:creator>Christophe</dc:creator> <pubDate>Mon, 28 Apr 2008 18:54:55 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-5438</guid> <description>Merci pour l&#039;article
Mais comment se fait le partage entre la Young Tenured et Perm pour un Xmx=Xms=2G ?</description> <content:encoded><![CDATA[<p>Merci pour l&#8217;article<br
/> Mais comment se fait le partage entre la Young Tenured et Perm pour un Xmx=Xms=2G ?</p> ]]></content:encoded> </item> <item><title>Par : Nicolas</title><link>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-4816</link> <dc:creator>Nicolas</dc:creator> <pubDate>Fri, 14 Mar 2008 09:02:22 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-4816</guid> <description>Article très intéressant. Bravo !
Nicolas</description> <content:encoded><![CDATA[<p>Article très intéressant. Bravo !<br
/> Nicolas</p> ]]></content:encoded> </item> <item><title>Par : Christian</title><link>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-4795</link> <dc:creator>Christian</dc:creator> <pubDate>Wed, 12 Mar 2008 19:33:23 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comment-4795</guid> <description>Excellent article, merci !</description> <content:encoded><![CDATA[<p>Excellent article, merci !</p> ]]></content:encoded> </item> </channel> </rss>
