Friday, October 18, 2013

Sizing the Java heap


Size your Java heap so that your application runs with a minimum heap usage of 40%, and a maximum heap usage of 70%.
Introduction
An incorrectly sized Java heap can lead to OutOfMemoryError exceptions or to a reduction in the performance of the Java application.
If the Java heap is smaller than the memory requirements of the application, OutOfMemoryError exceptions are generated because of Java heap exhaustion. If the Java heap is slightly larger than the requirements of the application, garbage collection runs very frequently and affects the performance of the application.
You must correctly size the Java heap based on the real memory usage of the Java application.
Sizing the heap based on application memory utilization
Set the maximum Java heap size, using the -Xmx command-line option, to a value that allows the application to run with 70% occupancy of the Java heap.
The Java heap occupancy often varies over time as the load applied to the application varies. For applications where occupancy varies, set the maximum Java heap size so that there is 70% occupancy at the highest point, and set the minimum heap size, using the -Xms command line option, so that the Java heap is 40% occupied at its lowest memory usage. If these values are set, the Java memory management algortihms can modify the heap size over time according to the application load, while maintaining usage in the optimal area of between 40% and 70% occupancy.
Maximum possible heap size and maximum recommended heap size (32-bit Java)
The memory space provided by the operating system to the Java process varies by operating system and is used for two separate memory areas: the Java heap and the native heap. Because a finite amount of memory is provided by the operating system, and that memory is shared between the two heaps, the larger the amount of memory that is allocated to the Java heap, using the -Xmx setting, the smaller the native heap becomes. If the native heap is too small, an OutOfMemoryError occurs when it is exhausted, in the same way as for the Java heap.
PlatformAdditional optionsMaximum heap sizeRecommended heap size limitAdditional notes
AIXNone3.25 GB2.5 GBMaximum heap size is not required to be, but should ideally be, a multiple of 256 MB
LinuxNone2 GB1.5 GB
Hugemem Kernel3 GB2.5 GB
WindowsNone1.8 GB1.5 GB
/3GB1.8 GB1.8 GB
The table shows both the maximum Java heap possible and a recommended limit for the maximum Java heap size setting. The use of a maximum Java heap setting up to the recommended limit is unlikely to reduce the native heap size to a point that the native heap is exhausted.
Before setting a Java heap size greater than the recommended limit, you must understand the level of usage of the native heap, to ensure that the native heap does not become exhausted.
If you are running an application that has particularly high numbers of threads or makes heavy use of Java Native Interface (JNI) code, for example, Type 2 JDBC drivers, you might experience problems relating to the native heap with smaller Java heap sizes than the recommended limit.
Maximum possible heap size and maximum recommended heap size (64-bit Java)
When running 64-bit Java, the memory space provided by the operating system to the Java process is very large. You can therefore assume that no limit is imposed on the maximum size of the Java heap because of the contention of memory resource between the Java heap and the native heap.
Java heap size and amount of physical memory available
It is important to have more physical memory than is required by all of the processes on the machine combined to prevent paging or swapping. Paging reduces the performance of the system and affects the performance of the Java memory management system.
When increasing the Java heap size, ensure that enough unused physical memory is available on the machine to cover the increase. If sufficient physical memory is not available, either install additional memory or take into account the effect on overall performance that occurs.
This requirement does not apply to operating systems running on System z.

Size your Java heap so that your application runs with a minimum heap usage of 40%, and a maximum heap usage of 70%.



Memory Limits for Windows Releases

http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspx


Physical Memory Limits: Windows 8

The following table specifies the limits on physical memory for Windows 8.
VersionLimit on X86Limit on X64
Windows 8 Enterprise
4 GB
512 GB
Windows 8 Professional
4 GB
512 GB
Windows 8
4 GB
128 GB


Physical Memory Limits: Windows 7

The following table specifies the limits on physical memory for Windows 7.
VersionLimit on X86Limit on X64
Windows 7 Ultimate
4 GB
192 GB
Windows 7 Enterprise
4 GB
192 GB
Windows 7 Professional
4 GB
192 GB
Windows 7 Home Premium
4 GB
16 GB
Windows 7 Home Basic
4 GB
8 GB
Windows 7 Starter
2 GB
N/A



Understanding 32-bit vs. 64-bit systems with Java Heap

Eclipse Mac OS: Hyperlinks are not working in welcome page

Have you ever come across the issue, where hyperlinks is not working in Mac OS Eclipse but it works in Windows OS.

We had faced this issue with the welcome page, where hyper links are not working. The reason was, href links with target=”_blank” is causing the issue.

We couldn't see any other solution other than removing it.


To understand about target attribute in html @ http://www.w3schools.com/tags/att_a_target.asp

Similar thread on the same topic @  https://code.google.com/p/android/issues/detail?id=41109

Thursday, October 17, 2013

SAP Transaction codes

You can find all transaction codes @ http://www.tcodesearch.com/


SE37 - ABAP Function Modules
SE16 - Data Browser(Table search)
SE11 - ABAP Dictionary Maintenance

GIT: Finding a commit based on SHA1 ID

> git show <sha1-id>

Example: > git show e43db49

This will display the complete changes including the with commit message.

Adding a new menu item in Eclipse Help Menu

As shown in the image below, if you want to add 'Tutorials' menu item in the Help Menu in Eclipse.




Adding command extension:

      <command
            defaultHandler="com.kk.help.TutorialsHelpHandler"
            id="com.kk.command.tutorialshelp"
            name="Tutorials">
      </command>


Adding menu extension:

 <menuContribution
            allPopups="false"
            locationURI="menu:help?after=intro">
         <separator
               name="slot1"
               visible="true">
         </separator>
         <command
               commandId="com.kk.command.tutorialshelp"
               label="Tutorials"
               style="push">
         </command>
         <separator
               name="slot2"
               visible="true">
         </separator>
      </menuContribution>


Handler implementation:

public class TutorialsHelpHandler extends AbstractHandler implements IHandler{

@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
//implemention here

retun null;

}
}