מדריך לפרופילי Java

1. סקירה כללית

לפעמים לא מספיק לכתוב קוד שרק פועל. אולי נרצה לדעת מה קורה באופן פנימי, כגון אופן הקצאת הזיכרון, השלכות של שימוש בגישת קידוד אחת על פני אחרת, השלכות של ביצועים במקביל, אזורים לשיפור הביצועים וכו '. אנו יכולים להשתמש בפרופילים לשם כך.

פרופיל Java הוא כלי ש עוקב אחר מבני וביצוע קוד Java של Java ברמת JVM. מבני קוד ופעולות אלה כוללים יצירת אובייקטים, ביצועים איטרטיביים (כולל שיחות רקורסיביות), ביצוע שיטות, ביצוע חוטים ואוספי אשפה.

במאמר זה נדון בפרופילי Java הראשיים: JProfiler, YourKit, Java VisualVM ו- Profiler Netbeans.

2. JProfiler

JProfiler הוא הבחירה המובילה עבור מפתחים רבים. עם ממשק משתמש אינטואיטיבי, JProfiler מספק ממשקים לצפייה בביצועי המערכת, שימוש בזיכרון, דליפות זיכרון פוטנציאליות ופרופיל פתילים.

בעזרת מידע זה אנו יכולים לדעת בקלות מה עלינו לבצע אופטימיזציה, ביטול או שינוי - במערכת הבסיסית.

הנה איך נראה ממשק JProfiler:

ממשק סקירה של JProfiler עם תכונות

כמו רוב הפרופילרים, אנו יכולים להשתמש בכלי זה עבור יישומים מקומיים ומרוחקים כאחד. זה אומר שאפשר פרופיל יישומי Java הפועלים במכונות מרוחקות מבלי להתקין עליהם דבר.

JProfiler מספק גם פרופיל מתקדם עבור מסדי נתונים SQL ו- NoSQL. הוא מספק תמיכה ספציפית עבור פרופילי JDBC, JPA / Hibernate, MongoDB, Casandra ו- HBase.

צילום המסך שלהלן מציג את ממשק הגישוש JDBC עם רשימת החיבורים הנוכחיים:

תצוגת בדיקת מסד נתונים של JProfiler

אם אנו להוטים ללמוד על ה- עץ אינטראקציות שיחות עם מסד הנתונים שלנו ולראות חיבורים שעלולים להיות דולפים, JProfiler מטפל בזה יפה.

זיכרון חי הוא תכונה אחת של JProfiler המאפשרת לנו ראה את השימוש בזיכרון הנוכחי על ידי היישום שלנו. אנו יכולים להציג שימוש בזיכרון עבור הצהרות ומופעים של אובייקטים או עבור עץ השיחות המלא.

במקרה של עץ הקריאה להקצאה, אנו יכולים לבחור להציג את עץ השיחה של אובייקטים חיים, אובייקטים שנאספו אשפה, או שניהם. אנו יכולים גם להחליט אם עץ הקצאה זה צריך להיות עבור מחלקה או חבילה מסוימת או כל הכיתות.

המסך למטה מציג את השימוש בזיכרון החי על ידי כל האובייקטים עם ספירת מופעים:

תצוגת זיכרון חי של JProfiler

תומך ב- JProfiler שילוב עם IDEs פופולריים כמו Eclipse, NetBeans ו- IntelliJ. זה אפילו אפשרי נווט מתמונה לקוד המקור!

3. YourKit

YourKit Java Profiler פועל על פלטפורמות רבות ושונות ומספק התקנות נפרדות לכל מערכת הפעלה נתמכת (Windows, MacOS, Linux, Solaris, FreeBSD וכו ').

בדומה ל- JProfiler, ל- YourKit יש תכונות ליבה להמחשת אשכולות, אוספי אשפה, שימוש בזיכרון ודליפות זיכרון, עם תמיכה בפרופיל מקומי ומרחוק באמצעות מנהור ssh.

הנה מבט מהיר על תוצאות פרופיל הזיכרון של יישום שרת Tomcat:

YourKit Java Profiler זיכרון פרופיל של יישום שרת Tomcat

YourKit גם שימושי באותם זמנים בהם אנו רוצים חריגים בפרופיל. אנו יכולים לגלות בקלות אילו סוגי חריגים הושלכו ומספר הפעמים שכל חריג התרחש.

ל- YourKit יש מעניין תכונת פרופיל מעבד המאפשרת פרופיל ממוקד באזורים מסוימים בקוד שלנו כגון שיטות או עצי משנה בחוטים. זה חזק מאוד מכיוון שהוא מאפשר פרופיל מותנה באמצעות התכונה שלו אם-אם.

איור 5 מציג דוגמה לממשק פרופיל החוטים:

איור 5. ממשק פרופילי חוטים של YourKit Java Profiler

אנחנו יכולים גם פרופיל SQL ושיחות מסד נתונים NoSQL עם YourKit. זה אפילו מספק תצוגה לשאילתות בפועל שבוצעו.

למרות שלא מדובר בשיקול טכני, מודל הרישוי המתיר של YourKit הופך אותו לבחירה טובה עבור צוותים מרובי משתמשים או מבוזרים, כמו גם עבור רכישות ברישיון יחיד.

4. Java VisualVM

Java VisualVM הוא כלי פרופיל פשוט אך חזק עבור יישומי Java. כברירת מחדל, כלי זה הוא יחד עם ערכת הפיתוח של Java (JDK). פעולתו נשענת על כלים עצמאיים אחרים המסופקים ב- JDK, כגון ג'קונסולה, jstat, ערימה, jinfo, ו jmap.

להלן נוכל לראות ממשק סקירה פשוט של הפעלת פרופיל מתמשכת באמצעות Java VisualVM:

פרופיל יישום שרת Tomcat מקומי Java VisualVM

יתרון מעניין אחד של Java VisualVM הוא שאנחנו יכולים הרחב אותו לפיתוח פונקציות חדשות כתוספים. לאחר מכן נוכל להוסיף תוספים אלה למרכז העדכונים המובנה של Java VisualVM.

תומך ב- Java VisualVM פרופיל מקומי ומרוחקוכן פרופיל זיכרון ומעבד. התחברות ליישומים מרוחקים דורשת מתן אישורים (שם מארח / IP וסיסמה לפי הצורך) אך אינו מספק תמיכה במנהרות ssh. אנחנו יכולים גם לבחור להפעיל פרופיל בזמן אמת עם עדכונים מיידיים (בדרך כלל כל 2 שניות).

להלן אנו יכולים לראות את תחזית הזיכרון של יישום Java המופתח באמצעות Java VisualVM:

היסטוגרמה של ערימת זיכרון Java VisualVM

בעזרת תכונת התצלום של Java VisualVM, אנו יכולים צלם תמונות של מפגשי פרופיל לצורך ניתוח מאוחר יותר.

5. פרופיל NetBeans

פרופיל NetBeans הוא יחד עם קוד פתוח NetBeans IDE של אורקל.

בעוד הפרופילר הזה חולק הרבה קווי דמיון עם Java VisualVM, זו בחירה טובה כאשר אנו רוצים שהכל יהיה עטוף בתוכנית אחת (IDE + Profiler).

כל שאר הפרופילים שנדונו לעיל מספקים תוספים לשיפור שילוב IDE.

צילום המסך שלמטה מציג דוגמה לממשק NetBeans Profiler:

ממשק טלמטריה פרופיל Netbeans

פרופיל Netbeans הוא גם א בחירה טובה לפיתוח ופרופיל קלים. NetBeans Profiler מספק חלון יחיד לתצורה ולבקרה של מושב הפרופילציה והצגת התוצאות. זה נותן תכונה ייחודית של ידיעה באיזו תדירות מתרחש איסוף אשפה.

6. פרופילים מוצקים אחרים

כמה אזכורים מכובדים כאן הם Java Mission Control, New Relic ו- Prefix (מ- Stackify) - אלה כוללים פחות נתח שוק בסך הכל, אך בהחלט ראויים לאזכור. לדוגמא, הקידומת של Stackify היא כלי פרופיל קל משקל מעולה, המתאים היטב לפרופיל לא רק יישומי Java אלא גם יישומי אינטרנט אחרים.

7. מסקנה

במחקר זה דנו בפרופילי פרופילים וב- Java Profilers. בדקנו את התכונות של כל פרופיל ומה מודיע על הבחירה הפוטנציאלית של אחד על פני אחר.

יש הרבה פרופילי Java זמינים עם כמה מאפיינים ייחודיים. הבחירה באיזה פרופיל ג'אווה להשתמש, כפי שראינו במאמר זה, תלויה בעיקר במבחר הכלים של מפתח, ברמת הניתוח הנדרשת ובתכונות של הפרופילר.