Wednesday Jul 29, 2015

WebLogic Update @ Voxxed Days Istanbul

It's relatively rare Java focused conferences have clearly WebLogic centric sessions. This is understandable as conference organizers must carefully balance between education, vendor-neutrality, sharing useful information and outright sales pitches. The distinction is very tenuous and historically frequently abused at Java conferences. As a result Java conference organizers (and attendees) often choose to err on the side of caution and avoid content focused on commercial products (note that while WebLogic is beyond a doubt a commercially licensed product developers can use it freely on their own local machines with an OTN license). An unfortunate side effect of this problem is that many developers remain woefully unaware of the changes happening in mission critical bits of industry infrastructure such as WebLogic. The exception to this unfortunate situation is events like Oracle OpenWorld and other Oracle technology centric conferences where WebLogic is far better represented.

For these reasons it was a breadth of fresh air to be able to deliver a brief WebLogic centric session at Voxxed Days Istanbul 2015. I am so grateful to the organizers for lending me the benefit of the doubt and recognizing the distinction between selling and informing current/prospective users about important technological changes that can help their organizations. Titled "What's New in WebLogic 12.1.3 and Beyond", the talk essentially covers the very important hard work that we have already done in WebLogic 12.1.3 including supporting some of the most critical Java EE 7 APIs as well as the fundamental changes coming soon in WebLogic 12.2.1 including full Java EE 7 platform support. Below is the slide deck for the talk (click here if you can't see the embedded slide deck.):

If you have not yet taken a look at WebLogic 12.1.3 and the road map for 12.2.1, the deck should offer a quick way to do so. Here is the abstract for the talk to give you better context:

WebLogic 12.1.3 was released about a year ago. It brings a large set of changes including support for some key new Java EE 7 APIs such as WebSocket, JAX-RS 2, JSON-P and JPA 2.1, support for Java SE 8, WebSocket fallback support, support for Server-Sent Events (SSE), improved Maven support, enhanced REST administration support, Oracle Database 12c driver support and much, much more. In this session we will take a detailed tour of these features. In addition we will also cover updated WebLogic support in the Oracle Cloud, the new Oracle public Maven repository, using WebLogic with Arquillian for testing and well as official Docker support for WebLogic. Towards the end of the session we will discuss what's coming in WebLogic 12.2.1 this year including full support for Java EE 7, multi-tenancy and more.

Besides the brief WebLogic talk I also covered Java EE 7 and Java EE 8 at Voxxed Days Istanbul as well as the Istanbul and Ankara JUG. More details of the event are posted on my personal blog.

Friday Jul 17, 2015

Accessing WebLogic Logs via REST

One of the most significant changes in the WebLogic 12.1.3 release is improvements in the REST management interface. Oracle ACE Director and WebLogic expert Dr. Frank Munz does a very nice job summarizing the changes on his blog. The REST management capability is really quite a nice addition to the existing DevOps oriented capabilities such as WLST and of course the admin console. One of the very interesting things you can do via the REST management interface in WebLogic 12.1.3 is easily access all WebLogic logs. Dr. Frank Munz explains nicely step by step how to do this via another excellent blog entry well worth a read.

The best way to learn the details of the REST management capabilities is of course always the WebLogic documentation.

Thursday Jun 18, 2015

Managing Logs in WebLogic

Logging is your first line of defense in terms administering, debugging and monitoring any part of the data center and especially the application server. WebLogic generates a number of very helpful log files for that reason. In addition WebLogic also provides ways to robustly manage these log files in terms of tuning things like log rotation and filtering. Ahmed Aboulnaga introduces some of these capabilities in a recent article on OTech Magazine (his article is mostly focused on the admin console).

The most detailed and up-to-date way to learn about WebLogic logging is always of course the WebLogic documentation. For example a couple of important logging aspects the article does not get into include configuring the logs themselves as well as easily viewing the logs through the WebLogic console.

Tuesday Jun 09, 2015

Your Spring application takes longer to deploy? Think again!

Uday Joshi of the WebLogic Team was recently asked to understand why a large Spring based application took longer to deploy on WebLogic than on Tomcat. And to do that, Uday only had one constraint, i.e. he was not given access to that Spring application! The only thing Uday had at his disposal was the deployment-time thread dumps of that application, nothing else.

In this detailed article, Uday describes how he mimicked the 'suspicious' application to understand what was going on. He also shares some of his findings and some recommendations like using filtering classloader. This article is based on a large Spring application but those recommendations also apply to any large application. 

Friday Jun 05, 2015

A Gentle Introduction to the WebLogic Diagnostic Framework (WLDF)

The WebLogic Diagnostic Framework (WLDF) is a powerful feature that has been around since WebLogic 9. It is an extremely robust way of live monitoring and diagnostics for the server, the underlying JVM, deployed applications and configured resources. Few if any other Java application servers can match the capabilities offered by WLDF. If you using WebLogic in production and don't know about WLDF, you are doing yourself a serious disservice.

Because of the power and flexibility offered by WLDF, it is not trivial to pick up and for some can be daunting. Fortunately Mike Croft of Oracle partner C2B2 consulting can help us out. He wrote up a very nice series of blog entries as a gentle introduction to WLDF. He provides a high level overview and discusses watches, notifications and the monitoring dashboard. The definitive way to learn about WLDF is of course always the latest WebLogic documentation :-).

Monday May 18, 2015

WLS Tip: Getting started with Arquillian on WebLogic Server

Arquillian is a popular open-source testing framework for Java EE containers. In this short video, Phil Zampino of the Oracle WebLogic Server Development Team shows how to get started with Arquillian to test applications running in WebLogic Server. For a more details on using Arquillian with WebLogic, you can then check this article.

For your convenience, you can also download this archive that contains the test application and the configuration files (pom.xml & arquillian.xml) used in the video.

Wednesday Apr 15, 2015

WLS Tip: Installing WebLogic with Chef

Chef is a popular open source infrastructure automation framework that has been popularized with the whole DevOps movement. In a nutshell, Chef has the notion of Recipe and Cookbook. A Recipe is written using a Ruby based DSL to describe how to install and configure software(s) on a host. And as the name suggest, a Cookbook is a collection of related Recipes.

This article explains how to create a simple WebLogic Cluster (on a VM) with two Managed Servers using Chef. The Cookbook described in the article can obviously be used as the basis for more advanced scenarios involving WebLogic.

Thursday Apr 02, 2015

An Introduction to WLST Script Profiles

In case you are not familiar with WLST (the WebLogic Scripting Tool), it is a powerful scripting runtime for administering WebLogic domains. Jython is used as the scripting language. Although other application servers now boast similar capabilities, WebLogic was one of the earliest to innovate this feature around 2006 with WebLogic 9. In fact, WLST maintains the most impressive set of features compared to competing offerings.

WLST is of course just one way of administering WebLogic. You can also work with WebLogic domains using Ant, Maven, the command line and of course the user-friendly admin console depending on your needs and preferences. WLST is particularly useful for automating entire deployment environments or complex administration scenarios. Matt Brasier of C2B2 Consulting (an Oracle partner) recently did an excellent talk on WLST. The slide deck for his talk is embedded below:

We also recently caught up with Peter Bowers, a key developer on the WebLogic team about WLST. He talked to us about the WLST script profile feature, including some cool sample code and a demo. Here's the video with Peter:

The best place to learn more about WLST is none other than the excellent latest WebLogic docs on the topic.

Tuesday Jan 20, 2015

WLS Tip: Introduction to WLST

WLST (WebLogic Scripting Tool) is one of the many WebLogic features that ease the management and administration of WLS instances. It is a command line based tool that can be used to create, manage, and monitor WebLogic domains.  WLST has a set of WLS specific commands (e.g. deploy an application - see here for the whole commands list), so creating WLS automated tasks is really easy. And since WLST is running on the JVM (*), those various scripted WLS taks can be easily integrated in the overall infrastructure (e.g. build platform, management infrastructure).

Mark Piller has recently written an technical introduction to WLST. In his article, Mark explains how to write WLST scripts.

You can also watch this WLST tutorial video produced by Frank Munz.

(*) Technically, WLST is using Jython on top of the JVM. 

Wednesday Jan 14, 2015

WebLogic Server Plug-in for Java Mission Control: installation

Java Mission Control (JMC) and Java Flight Recorder (JFR) provide a complete tool chain to continuously collect low level and detailed runtime information of Java applications enabling after-the-fact incident analysis.  The WebLogic Team has developed a WLS Plug-in for Java Mission Control.  This Plug-in provides custom WLS views that can be used to analyze more efficiently the contents of Flight Recordings produced by WebLogic instances (e.g. database queries, EJB calls, servlet invocations, etc.).

In the following short video, Tony Vlatas of the WebLogic Development Team explains how to install the WebLogic Server Plug-in in Java Mission Control.  You'll see that it's very simple! 

Java Mission Control and Java Flight Recorder combined with this Plug-in enables WLS developers and administrators to collect and easily analyse data from WebLogic instances running locally or instances deployed in production environments.  At this stage, the WLS Plug-in is still considered as experimental but it's worth giving it a try!

Wednesday Jul 23, 2014

Developing Java EE applications with Maven and WebLogic 12c

Like many other developers, Zemian Deng is finding the new Maven support in WebLogic 12c quite slick.

Check out his post at to learn a few useful tips.

Monday Jun 16, 2014

Detailed Analysis of a Stuck Weblogic Execute Thread Running JDBC Code

The following thread was extracted from a thread dump taken on a JVM instance running WebLogic Server.

In this post I will deconstruct this thread and describe the data it contains and the potential issues it may illuminate.

[STUCK] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)' id=73 idx=0x128 nid=13410 prio=1 alive, in native, daemon Method) Source) Source) Source) Source)









java.sql.DriverManager.getConnection( Source)

This thread is considered Stuck by WebLogic because it's been running for over the time defined in MaxStuckThreadTime (600 seconds by default). Weblogic Server waits for this time to be reached before marking a thread as stuck if the thread is still working after this time.  If you deem that 600 seconds is too long before a running thread is considered stuck then you can change the value of the this parameter using the WebLogic Console (as shown below), or use setMaxStuckThreadTime from the ServerFailureTriggerMBean interface.

An error including BEA-000337 will be logged in the server log file when the thread changes its status to stuck but the server won't take further action on this thread.  However, you might want to investigate why this thread is taking such a long time to process the work assigned to it.

Lets now look at the thread itself.  From its header, you can spot the thread identifier (2 in this example) and the queue where it originated.  The term Self-tuning indicates that the associated thread pool consistently checks the overall throughput to determine if the thread count should change.

id (or tid) is the thread identifier, a unique process-wide number that identifies this thread within the JVM process.  This id is unique but can be reused by another thread once this thread is terminated. 

nid is the OS-level native thread identifier.  It can be used effectively to correlate with high CPU usage threads identified at the OS level (e.g. with Linux watch command).  See Unexpected High CPU Usage with WebLogic Server (WLS) Support Pattern (Doc ID 779349.1) for detailed steps.

idx is the thread index in the threads array.

prio refers to the thread priority, a number inherited from the thread that created it.  You can learn more about thread priorities at Class Thread but basically threads with higher priority are executed in preference to threads with lower priority.

alive refers to the fact that this thread has not ended yet and is still active.  

in native means that the thread uses the operating system's native ability to manage multi-threaded processes.  

daemon indicates that this thread can't prevent the JVM from exiting.

The thread header is accompanied with a full java stack which lists each method and class invoked since the first assignement to the thread up to its most recent action. This thread consists of obtaining a connection to an Oracle database using a Type 4 JDBC driver and then issuing a call but getting no response from the back end database server.  The database failed to respond, and the thread has probably been in the same waiting mode (unchanged and not progressing java stack) for a long time since it's now considered stuck; the most recent invocation being

At this point the back end database needs to be checked to understand why it's not responding to the java thread request.  A starting point could be to query v$session to find potential blocking sessions at the database level.

Blocking sessions occur when one session holds an exclusive lock on an object and doesn't release it.

Needless to say, the communication with the database needs to be confirmed as healthy with none to very limited latency.  Firewall issues should be ruled out as well.  Firewalls could time out idle sockets used by JDBC connections to the database and lead to not closing the socket the JDBC driver is using.

Tuesday Jan 28, 2014

WebLogic, Database Integration Webcast: Q&A Recording

On January 16th 2014 we presented a webcast “Only with Oracle: Middleware & Database Integration Nirvana. In the webcast we described how Oracle WebLogic Server is uniquely designed to take advantage of built-in cloud capabilities in Oracle Database 12c. We described features that allow you to optimize database density for your middle tier by oversubscribing connection pools for cloud scale, support multitenant applications with pluggable databases, and ensure continuous availability and no lost transactions with transaction replay. We also provided examples of how customers can use this integration to benefit their businesses.

You can find a recording of the webcast here

The audience interest in this topic is exceptionally high and during the webcast there were many [almost 100] questions. Most relevant questions and answers have been transcribed below for your reference.



I have been a long time Oracle Database customer. What is the process to start evaluating WebLogic? What is the first step? Should I start with one application and test the performance increase before proceeding further?

The first step would be to obtain a WebLogic Server license, and then you probably would want to write a test application to try out these features.

Do you have an idea of how much performance improvement I can get when using ActiveGridLink for RAC?

We have observed up to 50% improvement in performance using WebSession Affinity with Active Grid Link for RAC. NEC Japan did a joint venture with WebLogic Server to analyze the benefits of Active GridLink for RAC please reference the white paper for test results

Do I have to have ActiveGridLink for RAC to use the DB12c features like Application Continuity, DRCP, Multi Tenancy, and Global Data Services?

There are advantages to use Active Grid Link with Application Continuity even though in WLS 12.1.2 you can do Application Continuity with a Generic Datasource. For Global Data Services you must use Active Grid Link. Multi Tenant DBs and DRCP work with either Active Grid Link or Generic Datasources.

With Application Continuity am I assured that I no longer will get errors and that all requests will be replayed?

Application Continuity handles most errors; these errors must be recoverable errors. Application Continuity is very conservative; if there have been any changes in the data the application would get before the replay then AC will not replay the operations. For this reason we recommend that applications retain their exception handling.

Are features talked about today available on any platform or Exalogic/Exadata only?

On any platform.

Does middleware need a database?

It all depends on what work your applications are doing.

We have Agile 9.3.1 on Oracle AS. We want to migrate the Oracle AS to WebLogic. Is there a metalink note on how to get started?

Yes there are very detailed resources on this. I would recommend starting with our e-book on this topic. You can find it here:

Do you have a test application or say eg application?

We have blogs posted on this area that will help you:

Is the evaluation of WLS similar to the db in that we can download and install the WLS in a DEVELOPMENT setting without a license?

Yes that is correct; you can obtain a Development license.

What is the future of distributed cache such as Coherence in Oracle's middleware strategy?

Coherence is very strategic to Fusion Middleware. Many of our customers are using Coherence to offload data from backend to increase performance and availability of data

Which WebLogic version contains the Active Grid Link feature?

Starting with WebLogic Server 10.3.6.

Does Active Grid Link require Oracle RAC?

Yes, Active Grid Link is a WebLogic Server Datasource integration with RAC clusters.

On our current project we had a java piece which uses WC spaces and for that a db specifically created for this. Trying to understand is there a better way to handle it.

I would need clarification of what is the current approach you are using to handle WC and what are the DB requirements? In what way would you like to improve this?

Is Failover to another RAC node is automatic or user has to reconnect again?

It is automatic/dynamic, no configuration changes or manual intervention is needed in WebLogic.

What about the transaction if a websession fail over to the other DB server in case of fast connection failover?

Transaction affinity is strict it will not connect to a second RAC instance unless there is a connection error.

Is Active Gridlink installed with WebLogic automatically or we have to install it separately?

Active Grid Link is a WLS Datasource it comes with the product.

Does Oracle Forms support automatic failover to active RAC node?

Forms application instance can "failover" but it doesn't happen transparently.  If one session dies a user will be failed over to a NEW session - and he would start at screen 1 again and any unsaved data would be lost.

With GridLink and session affinity, how are JTA transactions handled? Are there guarantee for a Commit or Rollover in case DB NODE failure?

Yes if there is a failover and the transaction has entered the 2 phase transactions will complete on the failed over RAC instance.

Is Active Grid Link license included in WebLogic license? And which edition?

With WebLogic Server Suite.

Any limitations to the nodes- how many max modes for load distribution?

Active Grid Link can load balance connections on as many RAC instances as there are in the cluster. How many RAC instances are supported on a RAC cluster efficiently is a question for a Database expert. This is a question of resource management in the database.

Is GridLink extra cost?

Active Grid Link for RAC is included with the Oracle WebLogic Suite license. You should check internally with your project team or your Oracle sales rep whether you are licensed for Oracle WebLogic Suite.

How does it differ from MultiDataSource?

There is a good comparison in our documentation at

Active GridLink:
• Requires one data source with a single URL. Multi data sources require a configuration with n generic data sources and a multi data source.
• Eliminates a polling mechanism that can fail if one of the generic data sources is performing slowly.
• Eliminates the need to manually add or delete a node to/from the cluster.
• Provides a fast internal notification (out-of-band) when nodes are available so that connections are load-balanced to the new nodes using Oracle Notification Service (ONS).
• Provides a fast internal notification when a node goes down so that connections are steered away from the node using ONS.
• Provides load balancing advisories (LBA) so that new connections are created on the node with the least load, and the LBA information is also used for gravitation to move idle connections around based on load.
• Provides affinity based on your XA transaction or your web session which may significantly improve performance.
• Leverages all the advantages of HA configurations like DataGuard.

Does it need to be thick or thin driver for continuity?

Thin driver

Can the database servers themselves be redundant?

If you refer by database redundancy as the ability of Active Grid Link failing over between RAC clusters this is possible with the use of DataGuard please read the white paper

- - ah - so there is a limit to the physical DB on the RAC side. Too many can still be a problem then.

Well this is a question of resource management in the database. Active Grid Link will do runtime load balancing, fast connection failover to as many RAC instances as there are in the cluster.

When configuring WebLogic for RAC aware clusters for Oracle DBMS for enterprises with global dispersed sites, will single pool configuration support also do or is such management dynamic connection support just for local data centers alone?

Active Grid Link with Data Guard can manage connections between 2 data centers without having to change the WLS configuration, please read the white paper that explains how to configure

If the db tier is not RAC, do you recommend MultiDataSource over the AGL?

Active Grid Link is a WLS datasource integration with RAC clusters. If your database is non RAC then you should use MultiDatasources.

Where can the white paper that goes into details about WebLogic Database integration found?

What are the limitations of Application Continuity? When can't I use it?

Application Continuity does not work with Default database or default PDB service, it does not support XA transactions in Database 12.1, and Application Continuity will not replay operations on Java deprecated concrete classes.

Can you provide the link to the white paper you mention about wls 12.1.1 and db 12c integration please?

In the white paper look at Table 1 it will show you the combinations of WebLogic Server, driver, database versions that support the Database 12c features

Is EBS or PeopleSoft certified with DRCP?

EBS and PeopleSoft are not using Database 12c yet.

Are these features work with non RAC database?

Yes these features work with RAC and Generic Databases.

In our current integration project we had to make many data sources to DB due to overloading, will Active GridLink be okay for that case or we will be need to configure more Grid links?

No you only need a single Active Grid Link Datasource. You would want to configure both your Database as well as you WLS Datasource to be able to best handle the load.

Please recap the two ways mentioned to connect to Multitenant data bases.

One way is to have a single WLS Datasource that pools connections to the different PDBs. The second configuration is one WLS Datasource per PDB, you would configure the WebLogic Datasources as you do today when connecting to different Databases.

Please refer to the blog posting for a description.

Is there any tool for automated upgrade of the code from 10.3.x to 12c WebLogic?

Everything should be upward compatible. If you want to upgrade from MultiDataSources to Active Grid Link, see

What is the failover mechanism for GridLink?

Grid Link will receive a FAN event from the Database, indicating that the RAC instance has come down. Active Grid Link will then make a connection to one of the surviving instances.

Node affinity and session affinity, is one we are doing what 3rd party load balance tool like big ip does, is that correct ? In that case which one is better to go for?

WLS does websession and transaction affinity with Active GridLink and not with a 3rd party. In the case of Transaction affinity the first connection is load balanced, once the connection is made to a RAC instance the affinity is saved in the transaction context. For the life of the transaction it will go against the same RAC instance. Websession affinity works the same way.

Is Active grid linked packed with WebLogic or needs separate setup and installation?

Active Grid Link is a WebLogic Datasource and is part of the WebLogic product.

What if the GridLink itself fails?

If Active Grid Link fails you would untarget the Datasource and then re-target it. If ActiveGridLink fails because of the health of the WebLogic server is bad, you would need to restart the server.

Can we set custom load balancing policies?

The load balancing policy is set on the database service on the database server side.

Can we use Active grid link option of WebLogic with Oracle Forms sessions?

Yes, but any failover is not completely transparent, the forms application after the failover to a new session would start at screen 1 again and any unsaved data would be lost.

Is there any sharding capabilities build in similar to multi-tenancy?

Sharding is not based or related to MultiTenancy. Sharding will be provided in a future release of Oracle Database.

Grid Link failover only detects node failure, or if database is down in RAC, then also it redirects connection to other RAC database?

ActiveGridLink fails over to other RAC instances within the RAC cluster. When ActiveGridLink is used together with DataGuard it can be used to failover between two different RAC clusters.

Is Global Data Services similar to MultiDataSrouce?

No it is not. Global Data Services is a Database feature not a WebLogic Datasource. Global Data Services manages global services that are available in more than one data center, or more than one RAC cluster, more than one Database. WebLogic Server integrates to it by using Active Grid Link.

Can GridLink support, active active databases as a single unit ?

The Oracle solution for active-active databases is Golden Gate. Active Grid Link works with Golden Gate.

Does WebLogic Active Grid Link works only with Oracle database, or it has support with other databases like Teradata and SQL?

Active Grid Link is a special feature of the WebLogic-OracleDB integration. We encourage you to look into it for special features and benefits.

How would ActiveGridLink handle a node hang or slow response?

Active Grid Link would not take any existing connection away from the application (even when connected to a slow RAC instance). Any new connection requests from the application would be given to less loaded instances in the RAC Cluster.

Is Active Grid Link available with only WebLogic Suite, WebLogic Server, or both? In other words, is Active Grid Link available with WebLogic Server if we do not have WebLogic Suite?

Active Grid Link is available with WebLogic Suite. All other features are available with all WebLogic Server SKUs.

Global Data Services is not a database but it manages global services across more than one RAC cluster, data centers, and databases. In WLS you would have a Active GridLink Datasource, when a Datacenter comes down, GDS sends an event to AGL indicating where the service is available and AGL will dynamically make a connection to where the service is available.

Global Data Services is not a database but it manages global services across more than one RAC cluster, data centers, and databases. In WLS you would have a Active GridLink Datasource, when a Datacenter comes down, GDS sends an event to AGL indicating where the service is available and AGL will dynamically make a connection to where the service is available.

Friday May 17, 2013

Troubleshooting Tools Part 3 - Heap Dumps

A Heap Dump is a snapshot of the Java process heap memory at a given time.  It's a useful tool to troubleshoot memory leaks and other memory related issues.  Heap dumps are to memory what thread dumps are to java threads.

There are different ways to dump the java heap used by a Java application such as WebLogic Server.  Heap dumps can be triggered automatically by JVMs such as HotSpot or JRockit when an OutOfMemory event occurs.


java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\myApp\hprof-dumps myApp  

This command will generate a heap dump file in the defined heap dump directory when an OOM is thrown.  

The file will be in HPROF binary format (*.hprof).  If no path is defined the file will be created in the directory from which the java process was launched.  The format of the file with JRockit is jrockit_pid,hprof, pid being the process ID of this JVM instance.  With HotSpot the format of the file will be java_pidpid.hprof.


java.lang.OutOfMemoryError: Java heap space

Dumping heap to D:\java_pid4148.hprof ...

Heap dump file created [24921731 bytes in 1.400 secs]

For WebLogic Server these properties, HeapDumpOnOutOfMemoryError and HeapDumpPath (optional), can be added directly to the startup script that contain the Java command that launches WLS.  On Windows the script (with default name startWebLogic.cmd) lives in the domain bin directory and the parameters can be directly added to the existing JAVA_OPTIONS.

With a JRockit VM process the following command can also be used to generate a heap dump.


jrcmd pid hprofdump filename=name_of_dump_file

However if you are using this command against a non JRockit process the following error will come up: Command failed in target VM

You can also manually generate a heap dump with tools such as jmap or VisualVM.


jmap -heap:live,format=b,file=filename pid

This command will generate a heap dump file in binary format and will only count live objects (the live option is optional). Live objects are used by applications and generally reside in the Young Generation part of the heap.

As illustrated in the screenshot below, generating a heap dump with VisualVM is very simple.  VisualVM is shipped as part of the HotSpot JVM  (/bin/jvisualvm.exe).  However, VisualVM can connect to java processes that started with other JVM such as JRockit.

Once generated, the heap dump will be parsed as shown below:

VisualVM enables you to browse heap dumps as shown above with the Classes view where you can easily identify the number and percentage of instances referred by each class.

jhat can also be used to analyze heap dump files.


jhat dumpfile

Reading from dumpfile...
Dump file created Fri May 17 15:25:41 PDT 2013
Snapshot read, resolving...
Resolving 580390 objects...
Chasing references, expect 116 dots.............................................
Eliminating duplicate references................................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.

Then you can open http://localhost:7000/ to navigate through the content of the dump file to identify objects with high number of occurrences.

Finally, as shown below, the OpenSource Eclipse MAT offers a very rich GUI that includes histograms and leak hunter actions, overview and leak suspect reports and much more.

Previous posts on troubleshooting tools:

Troubleshooting Tools Part 1 - VisualVM

Troubleshooting Tools Part 2 - jstack

Thursday Dec 06, 2012

How does EJIE, Basque Government's IT arm, uses Oracle WebLogic

Watch Mike Lehmann, Senior Director of Product Management from Oracle and Oscar Guadilla, Senior Architect from EJIE, Basque Government's IT Company, discuss EJIE's implementation of Oracle WebLogic Server. Hear EJIE's history with Oracle WebLogic Server, how and why they are using it for its web application platform, common services, file services, and intranet and the benefits they are gleaning. In addition, hear how EJIE is using WebLogic JMS for document management common service integration in its Eco-government project.

While you are at it, since you are at our youtube channel ( already, take a look at the various 'how to' videos Jeff West, Steve Button and others from our product management team have published here. Topics such as WebLogic Maven Plugin, TopLink Grid, How to Patch a WebLogic domain and much more are covered. Great way to spend some of your downtime during the holidays! :) 



The official blog for Oracle WebLogic Server fans and followers!

Stay Connected


« October 2015