@@ -19,7 +19,7 @@ export function GCTheory() {
1919
2020 { /* Generational Hypothesis */ }
2121 < section className = { styles . section } >
22- < h2 className = { styles . sectionTitle } > 🧬 Generational Hypothesis</ h2 >
22+ < h2 className = { styles . sectionTitle } > < svg className = { styles . sectionIcon } viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" strokeWidth = "2" > < circle cx = "12" cy = "12" r = "10" /> < path d = "M12 6v6l4 2" /> </ svg > Generational Hypothesis</ h2 >
2323 < div className = { styles . conceptCard } >
2424 < p className = { styles . lead } >
2525 < strong > "Most objects die young."</ strong > This empirical observation forms the
@@ -45,7 +45,7 @@ export function GCTheory() {
4545
4646 { /* Heap Structure */ }
4747 < section className = { styles . section } >
48- < h2 className = { styles . sectionTitle } > 🗃️ Heap Structure</ h2 >
48+ < h2 className = { styles . sectionTitle } > < svg className = { styles . sectionIcon } viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" strokeWidth = "2" > < rect x = "3" y = "3" width = "18" height = "18" rx = "2" /> < path d = "M3 9h18M9 21V9" /> </ svg > Heap Structure</ h2 >
4949 < div className = { styles . heapDiagram } >
5050 < div className = { styles . heapRegion } style = { { backgroundColor : 'rgba(134, 239, 172, 0.2)' , borderColor : '#86efac' } } >
5151 < h4 > Young Generation</ h4 >
@@ -80,7 +80,7 @@ export function GCTheory() {
8080
8181 { /* GC Types */ }
8282 < section className = { styles . section } >
83- < h2 className = { styles . sectionTitle } > ⚡ GC Event Types</ h2 >
83+ < h2 className = { styles . sectionTitle } > < svg className = { styles . sectionIcon } viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" strokeWidth = "2" > < path d = "M13 2L3 14h9l-1 8 10-12h-9l1-8z" /> </ svg > GC Event Types</ h2 >
8484 < div className = { styles . gcTypesGrid } >
8585 < div className = { styles . gcType } >
8686 < h4 style = { { color : '#86efac' } } > Minor GC (Young GC)</ h4 >
@@ -117,7 +117,7 @@ export function GCTheory() {
117117
118118 { /* Card Table */ }
119119 < section className = { styles . section } >
120- < h2 className = { styles . sectionTitle } > 🃏 Card Table & Write Barriers </ h2 >
120+ < h2 className = { styles . sectionTitle } > < svg className = { styles . sectionIcon } viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" strokeWidth = "2" > < rect x = "3" y = "3" width = "18" height = "18" rx = "2" /> < path d = "M3 9h18M3 15h18M9 3v18M15 3v18" /> </ svg > Card Table & Write Barriers </ h2 >
121121 < div className = { styles . conceptCard } >
122122 < p className = { styles . lead } >
123123 How does Minor GC know if Old Gen objects point to Young Gen objects
@@ -151,7 +151,7 @@ export function GCTheory() {
151151
152152 { /* GC Algorithms */ }
153153 < section className = { styles . section } >
154- < h2 className = { styles . sectionTitle } > 🔧 GC Algorithms Comparison</ h2 >
154+ < h2 className = { styles . sectionTitle } > < svg className = { styles . sectionIcon } viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" strokeWidth = "2" > < path d = "M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z" /> </ svg > GC Algorithms Comparison</ h2 >
155155 < div className = { styles . algorithmTable } >
156156 < div className = { styles . algHeader } >
157157 < span > Algorithm</ span >
@@ -194,7 +194,7 @@ export function GCTheory() {
194194
195195 { /* G1 Deep Dive */ }
196196 < section className = { styles . section } >
197- < h2 className = { styles . sectionTitle } > 🎯 G1 GC Deep Dive</ h2 >
197+ < h2 className = { styles . sectionTitle } > < svg className = { styles . sectionIcon } viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" strokeWidth = "2" > < circle cx = "12" cy = "12" r = "10" /> < circle cx = "12" cy = "12" r = "6" /> < circle cx = "12" cy = "12" r = "2" /> </ svg > G1 GC Deep Dive</ h2 >
198198 < div className = { styles . conceptCard } >
199199 < p className = { styles . lead } >
200200 G1 (Garbage First) divides the heap into equal-sized regions (~2048 regions by default).
@@ -222,7 +222,7 @@ export function GCTheory() {
222222
223223 { /* JVM Flags */ }
224224 < section className = { styles . section } >
225- < h2 className = { styles . sectionTitle } > 🚩 Essential JVM Flags</ h2 >
225+ < h2 className = { styles . sectionTitle } > < svg className = { styles . sectionIcon } viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" strokeWidth = "2" > < path d = "M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z" /> < line x1 = "4" y1 = "22" x2 = "4" y2 = "15" /> </ svg > Essential JVM Flags</ h2 >
226226 < div className = { styles . flagsGrid } >
227227 < div className = { styles . flagCategory } >
228228 < h4 > Heap Sizing</ h4 >
@@ -266,26 +266,26 @@ export function GCTheory() {
266266
267267 { /* Memory Leak Detection */ }
268268 < section className = { styles . section } >
269- < h2 className = { styles . sectionTitle } > 🔍 Memory Leak Detection</ h2 >
269+ < h2 className = { styles . sectionTitle } > < svg className = { styles . sectionIcon } viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" strokeWidth = "2" > < circle cx = "11" cy = "11" r = "8" /> < path d = "m21 21-4.35-4.35" /> </ svg > Memory Leak Detection</ h2 >
270270 < div className = { styles . conceptCard } >
271271 < h4 > Signs of Memory Leaks</ h4 >
272272 < div className = { styles . signsList } >
273273 < div className = { styles . sign } >
274- < span className = { styles . signIcon } > ⚠️ </ span >
274+ < span className = { styles . signIcon } > < svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" strokeWidth = "2" width = "24" height = "24" > < path d = "M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z" /> < line x1 = "12" y1 = "9" x2 = "12" y2 = "13" /> < line x1 = "12" y1 = "17" x2 = "12.01" y2 = "17" /> </ svg > </ span >
275275 < div >
276276 < strong > Growing Old Gen</ strong >
277277 < p > Old Gen keeps growing despite Full GCs</ p >
278278 </ div >
279279 </ div >
280280 < div className = { styles . sign } >
281- < span className = { styles . signIcon } > ⏰ </ span >
281+ < span className = { styles . signIcon } > < svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" strokeWidth = "2" width = "24" height = "24" > < circle cx = "12" cy = "12" r = "10" /> < polyline points = "12 6 12 12 16 14" /> </ svg > </ span >
282282 < div >
283283 < strong > Frequent Full GCs</ strong >
284284 < p > More than 1-2 Full GCs per hour is suspicious</ p >
285285 </ div >
286286 </ div >
287287 < div className = { styles . sign } >
288- < span className = { styles . signIcon } > 💥 </ span >
288+ < span className = { styles . signIcon } > < svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" strokeWidth = "2" width = "24" height = "24" > < circle cx = "12" cy = "12" r = "10" /> < line x1 = "15" y1 = "9" x2 = "9" y2 = "15" /> < line x1 = "9" y1 = "9" x2 = "15" y2 = "15" /> </ svg > </ span >
289289 < div >
290290 < strong > OutOfMemoryError</ strong >
291291 < p > The ultimate symptom - heap exhausted</ p >
@@ -308,7 +308,7 @@ jmap -dump:live,format=b,file=heap.hprof <pid>
308308
309309 { /* Production Tips */ }
310310 < section className = { styles . section } >
311- < h2 className = { styles . sectionTitle } > 🎯 Production Best Practices</ h2 >
311+ < h2 className = { styles . sectionTitle } > < svg className = { styles . sectionIcon } viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" strokeWidth = "2" > < path d = "M22 11.08V12a10 10 0 1 1-5.93-9.14" /> < polyline points = "22 4 12 14.01 9 11.01" /> </ svg > Production Best Practices</ h2 >
312312 < div className = { styles . tipsGrid } >
313313 < div className = { styles . tip } >
314314 < span className = { styles . tipIcon } > 1</ span >
0 commit comments