<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<!--
Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
-->

<html>
<head>
    <title>Profiling Points, Drill Down Graph, Heap Walker in NetBeans IDE</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
    <link rel="stylesheet" type="text/css" href="../../../netbeans.css">
</head>
<body>
    

<h1>Profiling Points, Drill Down Graph, Heap Walker in NetBeans IDE</h1>

<table><tr><td class="valign-top">

<p>
This demo shows three of the profiler features in the NetBeans IDE:
a drill down graph that makes it easier to see which categories your application is spending time in,
profiling points that allow you to control the profiler's actions from within your application,
and a heap walker for tracking down memory leaks.
</p>
<p>Author: Gregg Sporar<br>
Time: 7:00 </p>
<p><a href="http://mediacast.sun.com/details.jsp?id=4030">Download</a> ( 11.8 MB )</p>
<p>
  If you experience problems with playing the video, you can stream it into a new browser page from this
<a href="https://netbeans.org/download/flash/netbeans_60/profiler/profiler.html">mirror site</a>.</p>
<p><a href="../../../community/media.html">All NetBeans IDE Screencasts</a></p>
<div class="feedback-box">
    <a href="/about/contact_form.html?to=3&amp;subject=Feedback:%20Screencast%20-%20Profiling%20Points,%20Drill%20Down%20Graph,%20Heap%20Walker">Send Feedback on This Tutorial</a>
</div>

</td><td width="425" class="valign-top align-center">

<script type='text/javascript'>
var var_pid = "6433";
var var_furl = "http://netbeans.tv/images/";
var var_notPanorama = "0";
var var_altLink = "http://mediacast.sun.com/details.jsp?id=4030";
</script>

<div id="videoPlayer" class="video">
<p>Unable to load Flash player.</p></div>

<script type="text/javascript"> 

<!--  
    var so = new SWFObject(var_furl+"playerWidget.swf" , "pv", "410", "331", "8", "#666666"); 
    so.addParam("quality", "high"); 
    so.addParam("allowScriptAccess", "sameDomain"); 
    //so.addParam("menu", "false");   
    so.addParam("allowFullScreen", "true"); 
    so.addVariable("autoPlay", "false"); 
    so.addVariable("urlFileIdList", var_pid); 
    so.addVariable("show_title", "true"); 
    so.addVariable("PLAY_CALLBACK","emphasize");  
    so.addVariable("resizeLimitMax","true");
    so.addVariable("lang", "en"); 
    so.addVariable("flash_play","true");
    so.addVariable("author_name","NetBeans.tv");
    so.addVariable("configUrl",'http://sun.ora.ma/config.sun.ora.ma.xml');
    if (var_notPanorama == '1')
    {
        so.addVariable("clickAction","clickAction");    
    }
    so.write("videoPlayer");  
// --> 

</script>

</td></tr>
</table>

</body>
</html>
