Adobe LiveCycle ES2 Technical Guide
Adobe® LiveCycle® ES2 Performance
Tuning Guide
周is document provides guidance to application architects and  
developers to help them monitor and measure the performance  
characteristics of a LiveCycle application. 周is includes the use of built-in 
tools and mechanisms as well as the use of third party tools to analyze 
performance.
Introduction
In this guide we describe LiveCycle parameters that can be used when adjusting LiveCycle to meet specific 
operational needs. This document is intended to be used by individuals with good technical knowledge of all 
aspects of a LiveCycle environment. 
Each customer situation is unique with specific tuning requirements. LiveCycle’s Configuration Manager 
configures LiveCycle with the default settings, which may be good for general purposes, but should be revisited 
periodically.
Many LiveCycle Services can be individually tuned. Tuning LiveCycle typically involves monitoring the JVM(s), 
operating system, and database, then deciding what adjustments are necessary to improve system 
performance. Monitoring tools such as the LiveCycle Health Monitor and JConsole can provide information to 
help with required decisions.
LiveCycle’s “Bedrock layer” concepts are introduced within this guide to help tuning of the C/C++ components 
outside of the JVM.
In order to tune third party software such as application servers, and in some cases, the JVM and database, you 
may be referred you to 3rd party documentation.
Performance factors
There are many factors to consider when tuning a LiveCycle ES2 application. Consider each of the following 
when approaching a tuning exercise:
• 周e application design, the volume of form data, quantity of a瑴achments, as well as signatures or  
annotations in the forms that are used in the process will affect the user-interactive experience and the 
database growth over time.
• 周e presence of LiveCycle ES2 solution components, such as LiveCycle PDF Generator, or other  
components that are incorporated into processes will affect the performance of the servers.
• Some LiveCycle Services make heavy use of the underlying database. 周e choice of database server, CPU, 
and disk I/O bandwidth available on the database server will greatly influence performance.
• Other database factors, such as where the database runs (on the same server as LiveCycle ES2 or on a 
remote server), if there is a parallel database load from other applications, and the available bandwidth 
between LiveCycle ES2 and the database server.
Joel Lucuik, Senior Computer Scientist
Download Adobe®  
LiveCycle® ES2
h瑴p://www.adobe.com/ 
devnet/livecycle/trial.html
Adobe® LiveCycle® Data 
Services Home Page
h瑴p://www.adobe.com/ 
products/livecycle/
Adobe® LiveCycle® ES 
Developer Center
h瑴p://www.adobe.com/ 
devnet/livecycle/
Questions or suggestions 
about this Tech Guide? 
Contact us directly at
techguides@adobe.com
Reduce pdf file size - Compress reduce PDF size in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
C# Code & .NET API to Compress & Decompress PDF Document
compress pdf; can a pdf file be compressed
Reduce pdf file size - VB.NET PDF File Compress Library: Compress reduce PDF size in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
VB.NET PDF Document Compression and Decompression Control SDK
pdf reduce file size; best compression pdf
2
• 周e amount of memory available on all servers. More complex or larger applications require more 
memory to service any single transaction.
• 周e number and speed of the processors available on each server as well as the architecture of the 
processors. For example, Sun™ SPARC® and IBM® Power processors of nominally equal capacity do not 
perform equally for all LiveCycle applications.
• 周e infrastructure architecture affects performance, including factors such as whether the server is 
single-tiered or multi-tiered, and if the architecture implements clustering or high availability.
• 周e network bandwidth available between the application server and the desktop, or between the web 
server and the desktop. Network latency can affect the time it takes to transfer forms or data from the 
server to the desktop and vice versa, lengthening the overall response time.
• Scalability factors, both over time and during peak hours. Significant factors affecting scalability include 
growth and variation of content, customers, users, and volume.
• LiveCycle ES2 configuration se瑴ings for individual document services and core platform components.
• 周e use of security systems such as firewalls, intrusion detection systems, content filters, disk encryption, 
and antivirus so晴ware on the server or the desktop. On servers in particular, antivirus so晴ware and the 
choice of antivirus se瑴ings or policies can cause significant degradation in performance.
• Desktop infrastructure affects the performance of client-side components, in particular, the deployment of 
Adobe Reader and Workspace, which will affect the performance of a LiveCycle application from an 
end-user perspective. Desktop infrastructure factors include the speed of desktop systems, amount of 
memory available for the desktop, other desktop programs in use, as well as the version of Adobe Flash®, 
Adobe Reader®, or Adobe Acrobat® available on the desktop.
Monitoring LiveCycle
LiveCycle can be monitored by the Health Monitor or external tools such as JConsole or JVM logging. 
LCES Health Monitor
The LCES Health Monitor is an interface delivered with LiveCycle that presents a health check of the internal 
details of the Java container. The Health Monitor can be found in the Administration Console at the top right 
on the menu bar.
The Health Monitor provides two views: System, and WorkManager.
System
This view presents memory utilization, CPU utilization and other low level details.
• OSName: Name of the Operating system where LiveCycle is deployed.
• Up Time: Time in hours and minutes for which LiveCycle has been up.
• Total Physical Memory: Physical memory of the system in MB.
• Free Physical Memory: Available physical memory of the system in MB.
• Free swap space size: Free swap space in MB.
• Latest Heap: Currently used heap in MB of the system.
• Latest Commi瑴ed Heap: Current heap allocated to LiveCycle.
• Latest Non Heap: Currently used non heap in MB of the system.
• Latest Commi瑴ed Non Heap: Allocated non heap to the system in MB.
• Latest Number of 周read: Total number of threads currently present in the system. 
VB.NET Image: Image Resizer Control SDK to Resize Picture & Photo
easy and developers can shrink or reduce source image NET Image SDK supported image file formats, including & profession imaging controls, PDF document, image
change font size pdf comment box; reader compress pdf
C# Image: Zoom Image and Document Page in C#.NET Web Viewer
jpeg), gif, bmp (bitmap), tiff / multi-page tiff, PDF, etc so you can zoom any image or file page with Out" functionality is aimed to help users reduce the size
adjust size of pdf in preview; pdf file size limit
3
Also included in the health monitor are historical charts. 
WorkManager
This view presents the status of the work queues within LiveCycle, including successful, failed, total jobs, 
workflows, and events.
JConsole
The second method of monitoring the JVM is with JConsole. This is a JMX Console shipped with the Oracle 
JDK, the IBM JDK, and Oracle JRockit. JConsole connects to the JVM to provide real time heap information, 
Garbage Collection (GC) facilities, active thread and class counts among other details. Each JDK has its own 
heap layout and GC strategy. 
For the sake of simplicity, the authentication and encryption security mechanisms in the examples in this 
document are disabled. However, you should implement these security mechanisms when implementing 
remote management in real-world environments.
JBoss, WebLogic, and WebSphere require configuration changes to allow JConsole to connect to them.
.NET JBIG 2 SDK | Encode & Decode JBIG 2 Images
Highly-efficient data/image compression, 2-5 times than CCITT G3, CCITT G4; Simple to reduce PDF file size using JBIG2 compression within PDF;
change file size of pdf document; apple compress pdf
How to C#: Special Effects
filter will be applied to the image to reduce the noise. LinearStretch. Level the pixel between the black point and white point. Magnify. Double the image size.
reader shrink pdf; pdf compression
4
JBoss and WebLogic
JBoss and WebLogic require the following configuration change to the startup script to permit JConsole to 
connect:
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote
WebSphere
To connect to WebSphere, the following steps are required:
1. Create a file containing the following property definitions:
com.sun.management.jmxremote.port=8999
com.sun.management.jmxremote.authenticate=false
com.sun.management.jmxremote.ssl=false
// The port can be any available port (above 1024).
2. Modify the server JVM startup arguments by adding:
-Djavax.management.builder.initial= -Dcom.sun.management.jmxremote -Dcom.sun.management.config.
file=<path to file created in previous step>
Heap Memory Usage
JConsole provides low level memory statistics and basic graphing facilities to help you understand the 
behavior of the JVM heap and Operating System memory usage. One can easily profile memory during load 
testing of LiveCycle to determine behavior under load. 
The JVM can be monitored in real time during any kind of performance testing. This will not affect 
performance statistics.
JConsole permits you to trigger a full GC clean-up to see the “net” state of the heap. The GC response may not 
be immediate.
To learn more about JConsole, visit: http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html 
More detailed Memory usage documentation can be found on the Sun website:  
http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html#LowMemoryDetection
VB.NET Image: Compress & Decompress Document Image; RasterEdge .
reduce Word document size according to specific requirements in VB.NET; Scanned PDF encoding and decoding: compress a large size PDF document file for easier
change font size pdf form; pdf optimized format
VB.NET Image: How to Zoom Web Images in Visual Basic .NET Imaging
out" functionality allows VB developers to easily reduce the size gif, tiff and bmp) or document (PDF, multi-page you want to view your document file or image
best pdf compression; optimize scanned pdf
5
Memory Charting
Memory charts are available in JConsole to help monitor activity in the JVM. 
Memory Charting Exporting
Chart data can be exported in csv format for use in various reporting/charting tools.
View Images & Documents in Web Image Viewer | Online Tutorials
document or image file, like Word, PDF or TIFF View Image File via ZoomIn or ZoomOut Function. This ASP to help developers to decrease and reduce current zooming
pdf file compression; change font size fillable pdf
VB.NET Image: How to Process & Edit Image Using VB.NET Image
Compact rich image editing functions into several small-size libraries that are VB.NET programmers the API to scale source image file (reduce or enlarge image
change font size pdf fillable form; pdf markup text size
6
Heap Dump
JConsole provides heap dumping facility to help analyze the current state of the heap.
Any tools that understands the “.hprof” format can be used to analyze the heap dump. One option is MAT, a 
plugin for Eclipse. See http://www.eclipse.org/mat/ for details. 
Eclipse facilities for analyzing a Heap Dump
MAT is a free Memory Analyzer plugin for eclipse that is a fast and feature-rich Java heap analyzer that helps 
find memory leaks and reduce memory consumption.
MAT can import:
• .hprof: JConsole heap dump
• .phd: output of “kill -3 [processId]” from a Solaris/WebSphere JDK with the help of the following plugin: 
h瑴p://www.ibm.com/developerworks/java/jdk/tools/dt晪.html
For larger heap dumps consider adjusting the heap to -Xmx4096m in MemoryAnalyzer.ini.
7
JMX Facilities for Timing Processes
LiveCycle stores execution times of core services and customer built processes to help analyze where time is 
being spent. The collected data can be seen at a granular level using JConsole. Look for the tree of data under 
“adobe.com”.
Each custom service created within LiveCycle Workbench has JMX facilities associated with it automatically.
JVM Logging 
The Health Monitor and JConsole provide a snapshot of JVM behavior. For a data-over-time approach to assist 
analysis, consider the following JVM options for Sun, IBM or JRockit.
Sun JDK
The following options are taken from http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp:
• verboseGC
• Syntax: -verbosegc (See h瑴p://java.sun.com/docs/hotspot/gc1.4.2/example.html)
• Dumps GC behavior to System.out
• PrintGCDetails
• Syntax: -XX:+PrintGCDetails 
• Prints additional information about collections “[GC [DefNew: 64575K, 959K(64576K), 
0.0457646 secs] 196016K, 133633K(261184K), 0.0459067 secs]]”
• PrintGCTimestamps
• Syntax: -XX:+PrintGCTimeStamps
• Prints the times at which the GCs happen relative to the start of the application: “111.042: [GC 
111.042: [DefNew: 8128K, 8128K(8128K), 0.0000505 secs]111.042: [Tenured: 18154K, 
2311K(24576K), 0.1290354 secs] 26282K, 2311K(32704K), 0.1293306 secs]”
• HeapDumpOnOutOfMemoryError
• Syntax: -XX:+HeapDumpOnOutOfMemoryError
• Dumps the heap when an OutOfMemory error occurs. Heap is dumped to %JAVA_HOME%\
bin (where the Java process was launched from)
8
IBM JDK
Verbose Logging
1. Enabling verbose logging is done through admin console.  
Go to h瑴p://<host_name>:<admin_port>/ibm/console
2. Select Servers, Server Types, WebSphere application servers
3. For each server, Select <server>, Java and Process Management, Process definition, Java Virtual 
Machine
4. Check the Verbose garbage collection check box
Note that verbose information will be output to the server’s native_stderr.log
HeapDumpOnOutOfMemoryError
• Syntax: -XX:+HeapDumpOnOutOfMemoryError
• Dumps heap to [WebSphere’s JavaHome]\bin
Oracle JRockit
The following details are based on: http://www.oracle.com/technology/products/jrockit/index.html.
verbose
• Syntax: -Xverbose
• With -Xverbose, the JRockit JVM will output detailed information about the system. 周e output by default 
is saved to the standard file for error messages (stderr) but can be redirected to a separate file by using the 
-XverboseLog command line option. 周e information displayed depends on the parameter specified with 
the option. For example, specifying the parameter “cpuinfo” displays information about the CPU and 
indicates whether or not the JVM can determine if hyper-threading is enabled.
verbose:memdbg
• Syntax: -Xverbose:mdmdbg
• Turns on memory output and adds new special memdbg details. For example:
[memory ] 12.875: nursery GC 89648K, 89716K (89716K), 3.296 ms 
[memdbg ] nursery GC 291: promoted 1510 objects (69744 bytes) in 3.296 ms 
[memdbg ] Page faults before GC: 36784, page faults after GC: 36800, pages in heap: 22429 
[finalizer] (YC) Pending finalizers 0, 0 
[memdbg ] old collection 7 started 
[memdbg ] Compacting 8 heap parts at index 112 (type 2) (exceptional 0) 
[memdbg ] starting parallel marking phase 
[memdbg ] ending marking phase [memdbg ] current generational GC work score: 0.142956 
[memdbg ] last single generational GC work score: 0.081486 
[memdbg ] current error: -0.042956 
[memdbg ] previous nursery size: 736760 
[memdbg ] requested nursery size: 711984 
[memdbg ] starting parallel sweeping phase 
[memdbg ] ending sweeping phase 
[memory ] 11.841-12.025: GC 89716K, 67088K (89716K), 184.000 ms 
[memdbg ] Page faults before GC: 36827, page faults after GC: 37036, pages in heap: 22429 
[finalizer] (OC) Pending finalizers 0, 0
9
verbose:gc (or verbose:memory)
• Syntax: -Xverbose:gc
• Information about the memory management system, including:
• Start time of collection (seconds since JVM start)
• End time of collection (seconds since JVM start)
• Memory used by objects before collection (KB)
• Memory used by objects a晴er collection (KB)
• Size of heap a晴er collection (KB)
• Total time of collection (seconds or milliseconds)
• Total pause time during collection (milliseconds)
The information displayed by -Xverbose:memory or -Xverbose:gc will vary depending upon the type of 
garbage collector you are using.
gcReport
• Syntax: -XgcReport
• 周e -XgcReport option generates an end-of-run report that shows garbage collection statistics. You can 
use this report to determine if you’re using the most effective garbage collector for your application. 周e 
report divides the statistics into “young collections” and “old collections”. For each of the types, the 
following information is provided:
• Number of collections: 周e total number of garbage collections of this type during the run.
• Total promoted: 周e total number of objects and amount of bytes promoted from young 
space to old space by this type of garbage collection during the run.
• Max promoted: 周e maximum number of objects and amount of bytes promoted by any 
single garbage collection of this type during the run.
• Total GC time: 周e total time spent in this type of garbage collections during the run. For 
concurrent garbage collections, the total garbage collection time and the total garbage 
collection pause time will differ.
• Mean GC time: 周e average time spent in a single garbage collection of this type during the 
run. For concurrent garbage collections the garbage collection time and the garbage  
collection pause time will differ.
• Maximum GC pauses: 周e three longest garbage collection pauses caused by this type of 
garbage collection during the run.
• 周e effect of this option is identical to -Xverbose:gcreport.
DumpFullState 
• Syntax: -XXdumpFullState
• Usually, when the JRockit JVM crashes, it saves the state of the process (called a core dump), but the heap 
is removed from this state since it is large and would take up a great deal of disk space. With this option we 
can save all the process states including the heap. More disk space will be used, but it makes it much 
easier to use the core dump to find out what the problem was that caused the crash. 周is option saves a 
significant amount of information to disk. If you don’t want to save all the information that 
-XXdumpFullState saves, use -XXdumpSize:normal.
10
Managing the Heap
One aspect of a tuning exercise is understanding heap behavior and making adjustments if required. JConsole 
is one tool which can help monitor the heap. If there are many very large objects in the heap, the Document 
object can store its bytes in a file backend. The file backend is only created when the size of the bytes is larger 
than the Max Inline file size.
The benefit of this behavior is that it reduces the overall memory requirement of the JVM. For more 
information refer to Document Manager and the GDS (Global Document Storage) or MaxInLine Size.
64bit systems support large heaps which allow for a large Max InLine size if required. This may become useful 
if you require a much larger form cache for high speed rendering in the Forms DSC or faster output via the 
Output DSC.
It should be noted that garbage collection in a large heap can be lengthy. It is important to find the heap size 
that you need, and not specify a much larger heap “just to be safe”.
The best case scenario is a heap 20% larger than the maximum heap from test results. The size should be 
determined by running a test using the anticipated production system collateral and volume.
Overhead penalty and compressed pointers
A 64bit JVM has object pointers with 64bit lengths. Heap usage increases as a result. It does not mean that it 
takes up twice the amount of space, since primitive types do not change size. A String of 100 characters would 
not require twice the space on a 64bit JVM, but would require more space overall. The average increase for 
byte differences is approximately 30%. 
Using compressed pointers is a benefit and will not require a heavy overhead penalty. This defaults to ON for 
IBM JDK with a heap of less than 25GB, JRockit with a heap of less than 4GB, and has to be explicitly turned on 
in HotSpot V14 or later, with up to a 32GB heap. 
Use -XX:+UseCompressedOops to enable compressed pointers in Hotspot. See: 
http://wikis.sun.com/display/HotSpotInternals/CompressedOops or more information.
Compressed pointers is the default setting with the LiveCycle Turnkey (JBoss) installation.
Documents you may be interested
Documents you may be interested