JNI performance

I have a problem with JNI performance. The following simple array manipulation takes twice longer using JNI than pure Java. The dll is compiled under VC++ 4.0. Am I doing something wrong or JNI simply puts out too much overhead when calling C dll?
JNIEXPORT void JNICALL
Java_VisualEffect_zoomR(JNIEnv *env, jobject obj,  jint len,jdoubleArray arr, jintArray arr1, jintArray arr2)
     jint *carr1, *carr2;
     jdouble *rnd;
     jint i;
     carr1=(*env)->GetIntArrayElements(env, arr1, NULL);
     carr2=(*env)->GetIntArrayElements(env, arr2, NULL);
     rnd=(*env)->GetDoubleArrayElements(env, arr, NULL);
     if ( carr1==NULL|| carr2==NULL )
          return 0;
     if ( rnd==NULL )
          return 0;
     for(i=0; i<len; i++)
          carr1= carr2[i]*rnd[i];
(*env)->ReleaseIntArrayElements(env, arr1, carr1,0);
     (*env)->ReleaseIntArrayElements(env, arr2, carr2,0);
     (*env)->ReleaseDoubleArrayElements(env, arr, rnd,0);
Appreciate any suggestions.
Jay

It may also simply be that Java is actually faster than C in this trivial case or there is no difference and so the overhead matters. How big are these arrays?

Similar Messages

  • JNI performance degradation

    Hi All, I got a problem when using jni.
    The JNI program is used to call a c program for computing the maximum clique of a graph.
    When testing this program in its only main function, its speed is okay. For a graph with 2000 nodes and 300,000 edges, it takes 2 seconds.
    However, when I incorporated this JNI program into my own program, its performance greatly degraded. Given a graph with the same size in above example, it takes 50 seconds to finish computing.
    I do not know what's wrong with the program. Before calling the jni program, I will load many data into the memory. Whether this affects the performance?
    thank you for your help!

    Hi All, I got a problem when using jni.
    The JNI program is used to call a c program for
    computing the maximum clique of a graph.
    When testing this program in its only main function,
    its speed is okay. For a graph with 2000 nodes and
    300,000 edges, it takes 2 seconds.
    However, when I incorporated this JNI program into my
    own program, its performance greatly degraded. Given
    a graph with the same size in above example, it takes
    50 seconds to finish computing.
    I do not know what's wrong with the program. Before
    calling the jni program, I will load many data into
    the memory. Whether this affects the performance? Load it how? From a file? Do you load the data using native code or Java code?
    Do you make a large number of JNI calls during the computation?

  • JNI performance question

    I just wrote a C++ dll that mimicks the function of buffered reader. However, it is 3 times slower to perform the i/o operations using JNI than using Java's classes. Also, using the exact same code, the c++ is almost 2 times faster writing and almost 5 times reading.

    Hallo,
    If I have understood you correctly, you have carried out two tests:
    1. A test using Java and your own JNI code.
    2. A test using pure C++ to call your JNI functions, or to do much the same as your JNI code.
    I cannot say that I am surprised about your results. Sun have certainly devoted some effort over a longer time to making their native methods perform well. Perhaps they also use JNI API calls that are not published, so that the code runs faster (although I have no evidence for this).
    I am sure that it would be possible to tune your code. It would pay to look at your code, to see if you could oprimise some of the loops. Have you used a performance analyser to see which Java methods are taking the time?

  • JNI performance lost.

    I write a JNI rsa digital signature verify program ,use openssl C function,through JNI.but my java program run under multithread( 8 threads,because my computer is 8 cpus), it performance (verify times) 5000*8, but when I run openssl speed rsa1024 test multi 8,it performance can high to 8000*8.
    Can someone tell me why the performance lost so much? is it lost at the java byte[] data trans to c "unsigned char *" data and the c unsigned char* data trans back java?

    windshome wrote:
    because the performance of rsa in java in poor.
    java implements only reach 3300/cpu/second,but openssl implement it ,performance reach to 8000/cpu/second.You have a business case where you want to verify/create 64,000 (8 cpus x 8000) digital signatures a second on a sustained basis?
    And where 26,000 a second is not sufficient?
    Last time I checked credit card transactions for the entire US in 2003 (or so) was 1,700 a second. (And for that case the service provider processing is seconds if not longer.) And no single source does all of them.
    Only possibility I can think of for that is some military application but it would seem that a setup that required 8 cpus could probably afford two boxes. Or even eight.

  • How to read long line from text file

    Hi,
    I just faced problem when reading a big text file.
    BufferedReader br = new BufferedReader(new FileReader("D:\\afile.txt"));
    String str;
    int i;
    while ((str = br.readLine())!=null)
    i++;
    //do some work here...
    ...This code throws exception:
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap spaceSo I thought file line is very long. When I opened it in FAR it only displays no more than 4096 characters as a line.
    Help me to read a text file that's line is very long?

    try,
    $ java -X
    -Xmixed mixed mode execution (default)
    -Xint interpreted mode execution only
    -Xbootclasspath:<directories and zip/jar files separated by ;>
    set search path for bootstrap classes and resources
    -Xbootclasspath/a:<directories and zip/jar files separated by ;>
    append to end of bootstrap class path
    -Xbootclasspath/p:<directories and zip/jar files separated by ;>
    prepend in front of bootstrap class path
    -Xnoclassgc disable class garbage collection
    -Xincgc enable incremental garbage collection
    -Xloggc:<file> log GC status to a file with time stamps
    -Xbatch disable background compilation
    -Xms<size> set initial Java heap size
    -Xmx<size> set maximum Java heap size
    -Xss<size> set java thread stack size
    -Xprof output cpu profiling data
    -Xrunhprof[:help]|[:<option>=<value>, ...]
    perform JVMPI heap, cpu, or monitor profiling
    -Xdebug enable remote debugging
    -Xfuture enable strictest checks, anticipating future default
    -Xrs reduce use of OS signals by Java/VM (see documentation)
    -Xcheck:jni perform additional checks for JNI functions
    The -X options are non-standard and subject to change without notice.

  • Out of memory errors w/ MappedByteBuffers

    Hello,
    I'm having problems using a MappedByteBuffer on a file that is just over 1 gig. I see this error:
    file size: 1104924640
    java.io.IOException: Map failed
            at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:761)
            at com.ibm.esupport.Test.main(Test.java:32)
    Caused by: java.lang.OutOfMemoryError: Map failed
            at sun.nio.ch.FileChannelImpl.map0(Native Method)
            at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:758)
            ... 1 moreHowever, if I use the same code on a file of only 600 mb, it runs just fine. I also notice if I set incremental garbage collection on run (-Xincgc), it'll work on the 1 gig file but perf seems slower (to me). Here is my code:
    import java.io.*;
    import java.nio.*;
    import java.nio.channels.*;
    public class Test {
        public static void main(String[] args) {
            String filename = "c:/tmp/my_large_file";
            // open file
            File f = new File(filename);
            FileInputStream in = null;
            try {
                in = new FileInputStream(f);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
                System.exit(0);
            FileChannel fc = in.getChannel();
            MappedByteBuffer bb = null;
            try {       
                // Get the file's size and then map it into memory
                long sz = fc.size();
                //DEBUGGING
                System.out.println("file size: " + sz);
                bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, sz);
            } catch (IOException e) {
                e.printStackTrace();
                System.exit(0);
            // close flie
            try {
                bb.clear();
                bb = null;
                fc.close();
                fc = null;
                in.close();
                in = null;
            } catch (IOException e) {
                e.printStackTrace();
    }I'm running this on Windows XP Professional with 2 gig of RAM. Any help or direction anyone could give I'd appreciate it. I'd rather not run with incremental garbage collection. Shouldn't this work?
    -jeff

    give the jvm more memory
    with -Xms
    -Xmx
    java -X
    -Xmixed mixed mode execution (default)
    -Xint interpreted mode execution only
    -Xbootclasspath:<directories and zip/jar files separated by ;>
    set search path for bootstrap classes and resources
    -Xbootclasspath/a:<directories and zip/jar files separated by ;>
    append to end of bootstrap class path
    -Xbootclasspath/p:<directories and zip/jar files separated by ;>
    prepend in front of bootstrap class path
    -Xnoclassgc disable class garbage collection
    -Xincgc enable incremental garbage collection
    -Xloggc:<file> log GC status to a file with time stamps
    -Xbatch disable background compilation
    -Xms<size> set initial Java heap size
    -Xmx<size> set maximum Java heap size
    -Xss<size> set java thread stack size
    -Xprof output cpu profiling data
    -Xfuture enable strictest checks, anticipating future default
    -Xrs reduce use of OS signals by Java/VM (see documentation)
    -Xcheck:jni perform additional checks for JNI functions
    -Xshare:off do not attempt to use shared class data
    -Xshare:auto use shared class data if possible (default)
    -Xshare:on require using shared class data, otherwise fail.
    The -X options are non-standard and subject to change without notice.}

  • Help debugging JVM crash on linux

    Does anybody have any tips on debugging JVM crashes?
    I have a third-party shared library that I link in and use through JNI bindings.
    When I use this third party application with the 1.6.0 JVM on red hat enterprise linux, it causes the JVM to unpredictably SEGV.
    I'm stumped, I don't know how to debug this since I don't have source code for either the third-party app or for the JVM.
    Even some thoughts about what might cause the JVM to do this would be great. I've looked in depth at signals and signal handling but didn't find anything wrong there.
    Help!
    # An unexpected error has been detected by Java Runtime Environment:
    # SIGSEGV (0xb) at pc=0x00000000, pid=14312, tid=1319668656
    # Java VM: Java HotSpot(TM) Client VM (1.6.0_01-b06 mixed mode)
    # If you would like to submit a bug report, please visit:
    # http://java.sun.com/webapps/bugreport/crash.jsp
    --------------- T H R E A D ---------------
    Current thread (0x4a9a2400): JavaThread "AWT-EventQueue-0" [_thread_in_vm_trans, id=14327]
    siginfo:
    [error occurred during error reporting, step 90, id 0xb]
    Stack: [0x4ea38000,0x4ea89000), sp=0x4ea870dc, free space=316k
    Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
    V [libjvm.so+0x3ae327]
    V [libjvm.so+0x3aef34]
    C [libpthread.so.0+0xaf80]
    V [libjvm.so+0x3add75]
    V [libjvm.so+0x3ae327]
    V [libjvm.so+0x3079c0]
    V [libjvm.so+0x305278]
    C [libc.so.6+0x280d8]
    j java.awt.MediaTracker.statusID(IZZ)I+47
    j java.awt.MediaTracker.waitForID(IJ)Z+16
    j javax.swing.ImageIcon.loadImage(Ljava/awt/Image;)V+24
    j javax.swing.ImageIcon.<init>([B)V+82
    j sun.swing.ImageIconUIResource.<init>([B)V+2
    j sun.swing.SwingUtilities2$2.createValue(Ljavax/swing/UIDefaults;)Ljava/lang/Object;+69
    J javax.swing.UIDefaults.getFromHashtable(Ljava/lang/Object;)Ljava/lang/Object;
    J javax.swing.UIDefaults.get(Ljava/lang/Object;)Ljava/lang/Object;
    J javax.swing.MultiUIDefaults.get(Ljava/lang/Object;)Ljava/lang/Object;
    j javax.swing.UIDefaults.getIcon(Ljava/lang/Object;)Ljavax/swing/Icon;+2
    j javax.swing.UIManager.getIcon(Ljava/lang/Object;)Ljavax/swing/Icon;+4
    j javax.swing.plaf.basic.BasicFileChooserUI.installIcons(Ljavax/swing/JFileChooser;)V+48
    j javax.swing.plaf.basic.BasicFileChooserUI.installDefaults(Ljavax/swing/JFileChooser;)V+2
    j javax.swing.plaf.basic.BasicFileChooserUI.installUI(Ljavax/swing/JComponent;)V+39
    j javax.swing.plaf.metal.MetalFileChooserUI.installUI(Ljavax/swing/JComponent;)V+2
    j javax.swing.JComponent.setUI(Ljavax/swing/plaf/ComponentUI;)V+135
    j javax.swing.JFileChooser.updateUI()V+40
    j javax.swing.JFileChooser.setup(Ljavax/swing/filechooser/FileSystemView;)V+18
    j javax.swing.JFileChooser.<init>(Ljava/io/File;Ljavax/swing/filechooser/FileSystemView;)V+133
    j javax.swing.JFileChooser.<init>()V+9
    j com.coventor.misc.FontPicker$2.actionPerformed(Ljava/awt/event/ActionEvent;)V+4
    j javax.swing.AbstractButton.fireActionPerformed(Ljava/awt/event/ActionEvent;)V+84
    j javax.swing.AbstractButton$Handler.actionPerformed(Ljava/awt/event/ActionEvent;)V+5
    j javax.swing.DefaultButtonModel.fireActionPerformed(Ljava/awt/event/ActionEvent;)V+35
    j javax.swing.DefaultButtonModel.setPressed(Z)V+117
    j javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Ljava/awt/event/MouseEvent;)V+35
    j java.awt.Component.processMouseEvent(Ljava/awt/event/MouseEvent;)V+64
    j javax.swing.JComponent.processMouseEvent(Ljava/awt/event/MouseEvent;)V+23
    j java.awt.Component.processEvent(Ljava/awt/AWTEvent;)V+81
    j java.awt.Container.processEvent(Ljava/awt/AWTEvent;)V+18
    j java.awt.Component.dispatchEventImpl(Ljava/awt/AWTEvent;)V+562
    j java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+42
    j java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
    j java.awt.LightweightDispatcher.retargetMouseEvent(Ljava/awt/Component;ILjava/awt/event/MouseEvent;)V+320
    j java.awt.LightweightDispatcher.processMouseEvent(Ljava/awt/event/MouseEvent;)Z+139
    j java.awt.LightweightDispatcher.dispatchEvent(Ljava/awt/AWTEvent;)Z+50
    j java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+12
    j java.awt.Window.dispatchEventImpl(Ljava/awt/AWTEvent;)V+19
    j java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
    j java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+46
    j java.awt.EventDispatchThread.pumpOneEventForFilters(I)Z+156
    j java.awt.EventDispatchThread.pumpEventsForFilter(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V+30
    j java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+11
    j java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
    j java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
    j java.awt.EventDispatchThread.run()V+9
    v ~StubRoutines::call_stub
    V [libjvm.so+0x209a4d]
    V [libjvm.so+0x305bc8]
    V [libjvm.so+0x209360]
    V [libjvm.so+0x2093ed]
    V [libjvm.so+0x279605]
    V [libjvm.so+0x38076f]
    V [libjvm.so+0x306aa3]
    C [libpthread.so.0+0x4dd8]
    Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
    j java.awt.MediaTracker.statusID(IZZ)I+47
    j java.awt.MediaTracker.waitForID(IJ)Z+16
    j javax.swing.ImageIcon.loadImage(Ljava/awt/Image;)V+24
    j javax.swing.ImageIcon.<init>([B)V+82
    j sun.swing.ImageIconUIResource.<init>([B)V+2
    j sun.swing.SwingUtilities2$2.createValue(Ljavax/swing/UIDefaults;)Ljava/lang/Object;+69
    J javax.swing.UIDefaults.getFromHashtable(Ljava/lang/Object;)Ljava/lang/Object;
    J javax.swing.UIDefaults.get(Ljava/lang/Object;)Ljava/lang/Object;
    J javax.swing.MultiUIDefaults.get(Ljava/lang/Object;)Ljava/lang/Object;
    j javax.swing.UIDefaults.getIcon(Ljava/lang/Object;)Ljavax/swing/Icon;+2
    j javax.swing.UIManager.getIcon(Ljava/lang/Object;)Ljavax/swing/Icon;+4
    j javax.swing.plaf.basic.BasicFileChooserUI.installIcons(Ljavax/swing/JFileChooser;)V+48
    j javax.swing.plaf.basic.BasicFileChooserUI.installDefaults(Ljavax/swing/JFileChooser;)V+2
    j javax.swing.plaf.basic.BasicFileChooserUI.installUI(Ljavax/swing/JComponent;)V+39
    j javax.swing.plaf.metal.MetalFileChooserUI.installUI(Ljavax/swing/JComponent;)V+2
    j javax.swing.JComponent.setUI(Ljavax/swing/plaf/ComponentUI;)V+135
    j javax.swing.JFileChooser.updateUI()V+40
    j javax.swing.JFileChooser.setup(Ljavax/swing/filechooser/FileSystemView;)V+18
    j javax.swing.JFileChooser.<init>(Ljava/io/File;Ljavax/swing/filechooser/FileSystemView;)V+133
    j javax.swing.JFileChooser.<init>()V+9
    j com.coventor.misc.FontPicker$2.actionPerformed(Ljava/awt/event/ActionEvent;)V+4
    j javax.swing.AbstractButton.fireActionPerformed(Ljava/awt/event/ActionEvent;)V+84
    j javax.swing.AbstractButton$Handler.actionPerformed(Ljava/awt/event/ActionEvent;)V+5
    j javax.swing.DefaultButtonModel.fireActionPerformed(Ljava/awt/event/ActionEvent;)V+35
    j javax.swing.DefaultButtonModel.setPressed(Z)V+117
    j javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Ljava/awt/event/MouseEvent;)V+35
    j java.awt.Component.processMouseEvent(Ljava/awt/event/MouseEvent;)V+64
    j javax.swing.JComponent.processMouseEvent(Ljava/awt/event/MouseEvent;)V+23
    j java.awt.Component.processEvent(Ljava/awt/AWTEvent;)V+81
    j java.awt.Container.processEvent(Ljava/awt/AWTEvent;)V+18
    j java.awt.Component.dispatchEventImpl(Ljava/awt/AWTEvent;)V+562
    j java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+42
    j java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
    j java.awt.LightweightDispatcher.retargetMouseEvent(Ljava/awt/Component;ILjava/awt/event/MouseEvent;)V+320
    j java.awt.LightweightDispatcher.processMouseEvent(Ljava/awt/event/MouseEvent;)Z+139
    j java.awt.LightweightDispatcher.dispatchEvent(Ljava/awt/AWTEvent;)Z+50
    j java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+12
    j java.awt.Window.dispatchEventImpl(Ljava/awt/AWTEvent;)V+19
    j java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
    j java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+46
    j java.awt.EventDispatchThread.pumpOneEventForFilters(I)Z+156
    j java.awt.EventDispatchThread.pumpEventsForFilter(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V+30
    j java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+11
    j java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
    j java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
    j java.awt.EventDispatchThread.run()V+9
    v ~StubRoutines::call_stub
    --------------- P R O C E S S ---------------
    Java Threads: ( => current thread )
    0x4a954800 JavaThread "Image Fetcher 0" daemon [_thread_blocked, id=14331]
    0x4a9fd400 JavaThread "DestroyJavaVM" [_thread_blocked, id=14315]
    =>0x4a9a2400 JavaThread "AWT-EventQueue-0" [_thread_in_vm_trans, id=14327]
    0x4a99c000 JavaThread "AWT-Shutdown" [_thread_blocked, id=14326]
    0x4a97fc00 JavaThread "AWT-XAWT" daemon [_thread_blocked, id=14325]
    0x08292c00 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=14323]
    0x4a902000 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=14321]
    0x4a900800 JavaThread "CompilerThread0" daemon [_thread_blocked, id=14320]
    0x080bb400 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=14319]
    0x080ab400 JavaThread "Finalizer" daemon [_thread_blocked, id=14318]
    0x080a7000 JavaThread "Reference Handler" daemon [_thread_blocked, id=14317]
    Other Threads:
    0x080a4000 VMThread [id=14316]
    0x4a90b800 WatcherThread [id=14322]
    VM state:synchronizing (normal execution)
    VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event])
    [0x08056b90/0x08056bb8] Safepoint_lock - owner thread: 0x080a4000
    [0x08056c10/0x08056c38] Threads_lock - owner thread: 0x080a4000
    Heap
    def new generation total 960K, used 348K [0x422e0000, 0x423e0000, 0x427c0000)
    eden space 896K, 31% used [0x422e0000, 0x423270d0, 0x423c0000)
    from space 64K, 100% used [0x423d0000, 0x423e0000, 0x423e0000)
    to space 64K, 0% used [0x423c0000, 0x423c0000, 0x423d0000)
    tenured generation total 4096K, used 950K [0x427c0000, 0x42bc0000, 0x462e0000)
    the space 4096K, 23% used [0x427c0000, 0x428adae0, 0x428adc00, 0x42bc0000)
    compacting perm gen total 12288K, used 9535K [0x462e0000, 0x46ee0000, 0x4a2e0000)
    the space 12288K, 77% used [0x462e0000, 0x46c2fe78, 0x46c30000, 0x46ee0000)
    No shared spaces configured.
    Dynamic libraries:
    06000000-06412000 r-xp 00000000 00:0b 457890057 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/client/libjvm.so
    06412000-0642b000 rwxp 00412000 00:0b 457890057 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/client/libjvm.so
    0642b000-0684a000 rwxp 00000000 00:00 0
    08048000-08052000 r-xp 00000000 00:0b 457826569 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/bin/java
    08052000-08053000 rwxp 00009000 00:0b 457826569 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/bin/java
    08053000-082d9000 rwxp 00000000 00:00 0
    40000000-40015000 r-xp 00000000 08:02 507907 /lib/ld-2.3.2.so
    40015000-40016000 rwxp 00015000 08:02 507907 /lib/ld-2.3.2.so
    40016000-40017000 rwxp 00000000 00:00 0
    40017000-40018000 ---p 00000000 00:00 0
    40018000-40019000 rwxp 00000000 00:00 0
    40019000-4001f000 r-xp 00000000 00:0b 457959177 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/native_threads/libhpi.so
    4001f000-40020000 rwxp 00006000 00:0b 457959177 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/native_threads/libhpi.so
    40020000-40028000 rwxs 00000000 08:02 1917749 /tmp/hsperfdata_ken/14312
    40028000-40029000 r-xp 00000000 00:0b 650339 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libnativelib.so
    40029000-4002a000 rwxp 00000000 00:0b 650339 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libnativelib.so
    4002a000-4002b000 r-xp 00000000 08:02 2064395 /usr/X11R6/lib/X11/locale/lib/common/xlcUTF8Load.so.2
    4002b000-4002c000 rwxp 00000000 08:02 2064395 /usr/X11R6/lib/X11/locale/lib/common/xlcUTF8Load.so.2
    4002c000-40039000 r-xp 00000000 08:02 2818055 /lib/tls/libpthread-0.60.so
    40039000-4003a000 rwxp 0000c000 08:02 2818055 /lib/tls/libpthread-0.60.so
    4003a000-4003c000 rwxp 00000000 00:00 0
    4003c000-40043000 r-xp 00000000 00:0b 457891593 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/jli/libjli.so
    40043000-40045000 rwxp 00006000 00:0b 457891593 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/jli/libjli.so
    40045000-40047000 r-xp 00000000 08:02 507920 /lib/libdl-2.3.2.so
    40047000-40048000 rwxp 00001000 08:02 507920 /lib/libdl-2.3.2.so
    40048000-4017b000 r-xp 00000000 08:02 2818050 /lib/tls/libc-2.3.2.so
    4017b000-4017e000 rwxp 00132000 08:02 2818050 /lib/tls/libc-2.3.2.so
    4017e000-40182000 rwxp 00000000 00:00 0
    40182000-401a3000 r-xp 00000000 08:02 2818053 /lib/tls/libm-2.3.2.so
    401a3000-401a4000 rwxp 00021000 08:02 2818053 /lib/tls/libm-2.3.2.so
    401a4000-401a7000 ---p 00000000 00:00 0
    401a7000-401f5000 rwxp 00003000 00:00 0
    401f5000-40200000 r-xp 00000000 00:0b 457957641 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/libverify.so
    40200000-40201000 rwxp 0000b000 00:0b 457957641 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/libverify.so
    40201000-40205000 r-xp 00000000 08:02 360496 /usr/X11R6/lib/libXtst.so.6.1
    40205000-40206000 rwxp 00004000 08:02 360496 /usr/X11R6/lib/libXtst.so.6.1
    40206000-40207000 rwxp 00000000 00:00 0
    4020a000-4021b000 r-xp 00000000 08:02 507924 /lib/libnsl-2.3.2.so
    4021b000-4021c000 rwxp 00011000 08:02 507924 /lib/libnsl-2.3.2.so
    4021c000-4021e000 rwxp 00000000 00:00 0
    4021e000-40241000 r-xp 00000000 00:0b 457913353 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/libjava.so
    40241000-40243000 rwxp 00023000 00:0b 457913353 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/libjava.so
    40243000-40252000 r-xp 00000000 00:0b 457957897 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/libzip.so
    40252000-40254000 rwxp 0000e000 00:0b 457957897 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/libzip.so
    40254000-4032c000 rwxp 00000000 00:00 0
    4032c000-42254000 rwxp 000d8000 00:00 0
    42254000-42258000 rwxp 00000000 00:00 0
    42258000-422d4000 rwxp 02004000 00:00 0
    422d4000-422db000 r-xp 00000000 08:02 360480 /usr/X11R6/lib/libXi.so.6.0
    422db000-422dc000 rwxp 00006000 08:02 360480 /usr/X11R6/lib/libXi.so.6.0
    422e0000-423e0000 rwxp 00000000 00:00 0
    423e0000-427c0000 rwxp 0218c000 00:00 0
    427c0000-42bc0000 rwxp 00000000 00:00 0
    42bc0000-462e0000 rwxp 0296c000 00:00 0
    462e0000-46ee0000 rwxp 00000000 00:00 0
    46ee0000-4a2e0000 rwxp 06c8c000 00:00 0
    4a2e0000-4a2e1000 rwxp 00000000 00:00 0
    4a2e1000-4a2e2000 rwxp 0a08d000 00:00 0
    4a2e2000-4a2e5000 rwxp 00000000 00:00 0
    4a2e5000-4a300000 rwxp 0a091000 00:00 0
    4a300000-4a306000 rwxp 00000000 00:00 0
    4a306000-4a320000 rwxp 0a0b2000 00:00 0
    4a320000-4a324000 rwxp 00000000 00:00 0
    4a324000-4a33f000 rwxp 00003000 00:00 0
    4a33f000-4a346000 rwxp 00000000 00:00 0
    4a346000-4a360000 rwxp 00025000 00:00 0
    4a360000-4a4db000 r-xs 02c75000 00:0b 458017033 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/rt.jar
    4a4db000-4a50b000 rwxp 00000000 00:00 0
    4a50b000-4a50c000 ---p 00030000 00:00 0
    4a50c000-4a58c000 rwxp 00031000 00:00 0
    4a58c000-4a58f000 ---p 000b1000 00:00 0
    4a58f000-4a5dd000 rwxp 000b4000 00:00 0
    4a5dd000-4a5e0000 ---p 00102000 00:00 0
    4a5e0000-4a62e000 rwxp 00105000 00:00 0
    4a62e000-4a82e000 r-xp 00000000 08:02 3342341 /usr/lib/locale/locale-archive
    4a82e000-4a831000 ---p 00000000 00:00 0
    4a831000-4a87f000 rwxp 00003000 00:00 0
    4a87f000-4a882000 ---p 00051000 00:00 0
    4a882000-4aa00000 rwxp 00054000 00:00 0
    4aa00000-4aa03000 ---p 00000000 00:00 0
    4aa03000-4aa51000 rwxp 00003000 00:00 0
    4aa51000-4aa52000 ---p 00051000 00:00 0
    4aa52000-4aad2000 rwxp 00052000 00:00 0
    4aad2000-4ab4d000 r-xp 00000000 00:0b 457897225 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/libawt.so
    4ab4d000-4ab54000 rwxp 0007b000 00:0b 457897225 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/libawt.so
    4ab54000-4ab78000 rwxp 00000000 00:00 0
    4ab78000-4ac3e000 r-xp 00000000 00:0b 457929481 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/libmlib_image.so
    4ac3e000-4ac3f000 rwxp 000c5000 00:0b 457929481 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/libmlib_image.so
    4ac3f000-4ac7d000 r-xp 00000000 00:0b 457961481 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/xawt/libmawt.so
    4ac7d000-4ac80000 rwxp 0003d000 00:0b 457961481 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/xawt/libmawt.so
    4ac80000-4ac93000 r-xp 00000000 00:0b 457941513 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/libnet.so
    4ac93000-4ac94000 rwxp 00013000 00:0b 457941513 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/libnet.so
    4ac95000-4aca2000 r-xp 00000000 08:02 360472 /usr/X11R6/lib/libXext.so.6.4
    4aca2000-4aca3000 rwxp 0000c000 08:02 360472 /usr/X11R6/lib/libXext.so.6.4
    4aca3000-4ad7f000 r-xp 00000000 08:02 360462 /usr/X11R6/lib/libX11.so.6.2
    4ad7f000-4ad82000 rwxp 000db000 08:02 360462 /usr/X11R6/lib/libX11.so.6.2
    4ad82000-4b47e000 r-xp 00000000 00:0b 458691848 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libSpaABlend.so
    4b47e000-4b48b000 rwxp 006fb000 00:0b 458691848 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libSpaABlend.so
    4b48b000-4b48d000 rwxp 00000000 00:00 0
    4b48d000-4b9da000 r-xp 00000000 00:0b 458693129 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libSpaALops.so
    4b9da000-4b9e3000 rwxp 0054c000 00:0b 458693129 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libSpaALops.so
    4b9e3000-4b9e6000 rwxp 00000000 00:00 0
    4b9e6000-4ba23000 r-xp 00000000 00:0b 458693385 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libSpaAPart.so
    4ba23000-4ba25000 rwxp 0003c000 00:0b 458693385 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libSpaAPart.so
    4ba25000-4be22000 r-xp 00000000 00:0b 458693641 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libSpaASurf.so
    4be22000-4be28000 rwxp 003fc000 00:0b 458693641 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libSpaASurf.so
    4be28000-4be29000 rwxp 00000000 00:00 0
    4be29000-4bfbb000 r-xp 00000000 00:0b 458694153 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libSpaAVis.so
    4bfbb000-4bfc0000 rwxp 00192000 00:0b 458694153 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libSpaAVis.so
    4bfc0000-4bfc1000 rwxp 00000000 00:00 0
    4bfc1000-4c033000 r-xp 00000000 00:0b 458694409 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libSpaAWarp.so
    4c033000-4c035000 rwxp 00071000 00:0b 458694409 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libSpaAWarp.so
    4c035000-4e20d000 r-xp 00000000 00:0b 458692104 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libSpaACIS.so
    4e20d000-4e252000 rwxp 021d7000 00:0b 458692104 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libSpaACIS.so
    4e252000-4e26b000 rwxp 00000000 00:00 0
    4e26b000-4e64b000 r-xp 00000000 00:0b 458694665 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libSpaBase.so
    4e64b000-4e659000 rwxp 003e0000 00:0b 458694665 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libSpaBase.so
    4e659000-4e65e000 rwxp 00000000 00:00 0
    4e65e000-4e66a000 r-xp 00000000 08:02 1228857 /usr/lib/libz.so.1.1.4
    4e66a000-4e66c000 rwxp 0000b000 08:02 1228857 /usr/lib/libz.so.1.1.4
    4e66c000-4e671000 r-xp 00000000 08:02 507918 /lib/libcrypt-2.3.2.so
    4e671000-4e672000 rwxp 00004000 08:02 507918 /lib/libcrypt-2.3.2.so
    4e672000-4e699000 rwxp 00000000 00:00 0
    4e699000-4e6e6000 r-xp 00000000 08:02 360494 /usr/X11R6/lib/libXt.so.6.0
    4e6e6000-4e6ea000 rwxp 0004c000 08:02 360494 /usr/X11R6/lib/libXt.so.6.0
    4e6ea000-4e793000 r-xp 00000000 08:02 1228905 /usr/lib/libstdc++.so.5.0.3
    4e793000-4e798000 rwxp 000a8000 08:02 1228905 /usr/lib/libstdc++.so.5.0.3
    4e798000-4e79d000 rwxp 00000000 00:00 0
    4e79d000-4e7a5000 r-xp 00000000 08:02 508037 /lib/libgcc_s-3.2.3-20040701.so.1
    4e7a5000-4e7a6000 rwxp 00007000 08:02 508037 /lib/libgcc_s-3.2.3-20040701.so.1
    4e7a6000-4e862000 r-xp 00000000 00:0b 458691592 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libSpaAAsm.so
    4e862000-4e865000 rwxp 000bb000 00:0b 458691592 /mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing/libSpaAAsm.so
    4e865000-4e86c000 r-xp 00000000 08:02 360460 /usr/X11R6/lib/libSM.so.6.0
    4e86c000-4e86d000 rwxp 00007000 08:02 360460 /usr/X11R6/lib/libSM.so.6.0
    4e86d000-4e881000 r-xp 00000000 08:02 360456 /usr/X11R6/lib/libICE.so.6.3
    4e881000-4e882000 rwxp 00013000 08:02 360456 /usr/X11R6/lib/libICE.so.6.3
    4e882000-4e884000 rwxp 00000000 00:00 0
    4e884000-4e902000 r-xp 00000000 00:0b 457903625 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/libfontmanager.so
    4e902000-4e90c000 rwxp 0007e000 00:0b 457903625 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/libfontmanager.so
    4e90c000-4e911000 rwxp 00000000 00:00 0
    4e911000-4e914000 ---p 00005000 00:00 0
    4e914000-4e962000 rwxp 00008000 00:00 0
    4e962000-4e969000 r-xp 00000000 00:0b 457941769 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/libnio.so
    4e969000-4e96a000 rwxp 00006000 00:0b 457941769 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/libnio.so
    4e96a000-4e970000 r-xs 00000000 08:02 2441410 /usr/lib/gconv/gconv-modules.cache
    4e970000-4e977000 r-xs 00106000 00:0b 458016777 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/resources.jar
    4e985000-4e98d000 r-xp 00000000 08:02 360470 /usr/X11R6/lib/libXcursor.so.1.0
    4e98d000-4e98e000 rwxp 00007000 08:02 360470 /usr/X11R6/lib/libXcursor.so.1.0
    4e98e000-4e995000 r-xp 00000000 08:02 360492 /usr/X11R6/lib/libXrender.so.1.2.2
    4e995000-4e996000 rwxp 00006000 08:02 360492 /usr/X11R6/lib/libXrender.so.1.2.2
    4e996000-4e999000 ---p 00000000 00:00 0
    4e999000-4e9e7000 rwxp 00003000 00:00 0
    4e9e7000-4e9ea000 ---p 00051000 00:00 0
    4e9ea000-4ea38000 rwxp 00054000 00:00 0
    4ea38000-4ea3b000 ---p 000a2000 00:00 0
    4ea3b000-4ea89000 rwxp 000a5000 00:00 0
    4ea89000-4ea8c000 ---p 000f3000 00:00 0
    4ea8c000-4eb23000 rwxp 000f6000 00:00 0
    4eb23000-4eb77000 r-xp 00000000 00:0b 457897481 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/libcmm.so
    4eb77000-4eb7a000 rwxp 00054000 00:0b 457897481 /mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/libcmm.so
    4eb7a000-4eb96000 r-xp 00000000 08:02 2064760 /usr/X11R6/lib/X11/locale/lib/common/ximcp.so.2
    4eb96000-4eb98000 rwxp 0001c000 08:02 2064760 /usr/X11R6/lib/X11/locale/lib/common/ximcp.so.2
    4ec00000-4ec99000 rwxp 00086000 00:00 0
    4ec99000-4ed00000 ---p 00000000 00:00 0
    bfff7000-c0000000 rwxp ffff9000 00:00 0
    VM Arguments:
    java_command: com.coventor.misc.FontPicker
    Launcher Type: SUN_STANDARD
    Environment Variables:
    PATH=/mnt/tools/intel/fc/9.0/bin:/mnt/users/ken/builds/cware/trunk/memcad/bin:/mnt/users/ken/builds/cware/trunk/memcad/bin/linux:/mnt/users/ken/builds/cware/trunk/memcad/bin/linux:/mnt/builds_linux/trunk/current/debug/memcad/bin:/mnt/builds_linux/trunk/current/debug/memcad/bin/linux:/mnt/users/ken/builds/cware/trunk/memcad/src/test/tools/scripts:/mnt/users/ken/builds/cware/trunk/memcad/src/test/tools/linux:/mnt/builds_linux/trunk/current/debug/memcad/src/test/tools/scripts:/mnt/builds_linux/trunk/current/debug/memcad/src/test/tools/linux:/mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/bin:.:/mnt/users/ken/bin:/mnt/users/ken/scripts:/bin:/usr/bin:/usr/sbin:/usr/lang:/usr/ucb:/usr/local/bin:/etc:/usr/dt/bin:/usr/kerberos/bin:/usr/X11R6/bin:/usr/X11R6/bin:/opt/ken/WindRiver/SNiFF+-4.0.2/bin:/mnt/users/ken/local/graphviz/graphviz-1.12/dotneato:/mnt/tools/bin
    LD_LIBRARY_PATH=/mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/client:/mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386:/mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/../lib/i386:/mnt/tools/intel/fc/9.0/lib:/mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing:/mnt/users/ken/builds/cware/trunk/memcad/lib/linux/mech:/mnt/users/ken/builds/cware/trunk/memcad/lib/linux/missing:/mnt/builds_linux/trunk/current/debug/memcad/lib/linux/missing:/mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386:/mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/client:/mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/native_threads:/mnt/users/ken/builds/cware/trunk/memcad/runtime/jre/1.6.0_01/linux/lib/i386/xawt
    SHELL=/usr/local/bin/tcsh
    DISPLAY=wheelie.memcad.com:0.0
    HOSTTYPE=i386-linux
    OSTYPE=linux
    ARCH=linux
    MACHTYPE=i386
    Signal Handlers:
    SIGSEGV: [libjvm.so+0x3aeee0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000000, flags was changed from 0x10000004, consider using jsig library
    SIGBUS: [libjvm.so+0x3aeee0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000000, flags was changed from 0x10000004, consider using jsig library
    SIGFPE: [libjvm.so+0x305260], sa_mask[0]=0x00000080, sa_flags=0x10000000, flags was changed from 0x10000004, consider using jsig library
    SIGPIPE: [libjvm.so+0x305260], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
    SIGILL: [libjvm.so+0x305260], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
    SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000
    SIGUSR2: [libjvm.so+0x307270], sa_mask[0]=0x00000000, sa_flags=0x10000004
    SIGHUP: [libjvm.so+0x306c90], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
    SIGINT: [libjvm.so+0x306c90], sa_mask[0]=0x00000002, sa_flags=0x10000000
    SIGQUIT: [libjvm.so+0x306c90], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
    SIGTERM: [libjvm.so+0x306c90], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
    SIGUSR2: [libjvm.so+0x307270], sa_mask[0]=0x00000000, sa_flags=0x10000004
    --------------- S Y S T E M ---------------
    OS:Red Hat Enterprise Linux WS release 3 (Taroon Update 8)
    uname:Linux 2.4.21-32.ELsmp #1 SMP Fri Apr 15 21:17:59 EDT 2005 i686
    libc:glibc 2.3.2 NPTL 0.60
    rlimit: STACK infinity, CORE 0k, NPROC 7168, NOFILE 1024, AS infinity
    load average:0.06 0.06 0.02
    CPU:total 2 family 15, cmov, cx8, fxsr, mmx, sse, sse2, ht
    Memory: 4k page, physical 4029580k(1730940k free), swap 2096472k(2096472k free)
    vm_info: Java HotSpot(TM) Client VM (1.6.0_01-b06) for linux-x86, built on Mar 14 2007 01:00:53 by "java_re" with gcc 3.2.1-7a (J2SE release)

    Hi there,
    Since you said you use JNI, did you try to use the -Xcheck:jni parameter? It will perform some extra consistency checks when calling JNI, at the expense of maybe some loss in JNI performance. This might catch any problems that might occur at the JNI level. Of course, if the third-party library has bugs and corrupts the VM heap, there's no much we can do.
    Regards,
    Tony, HS GC Group

  • Help debugging on Macs

    Hi all,
    My applet works fine on Windows, but it fails on Macs sometimes.
    To access the applet:
    1) Click here: http://www.cengraving.com/s/z/Personalized-gifts/Card-holders/CH003.jsp
    2) Click "Customize."
    On Firefox and Safari on the Mac, the applet crashes when you attempt to add a second line, or if you click one of the drop down menus and then try to type text in. This is a nasty bug. It brings down the browser as well. The bug happens every time, and I don't know how to debug the applet because no exceptions are getting logged anywhere.
    The applet is stable on Windows, and it works fine in IE on the Mac I tried. IE was using JRE 1.3.x while Firefox and Safari were using 1.4.2_07.
    Anyone have advice on how to troubleshoot the applet?

    Hi there,
    Since you said you use JNI, did you try to use the -Xcheck:jni parameter? It will perform some extra consistency checks when calling JNI, at the expense of maybe some loss in JNI performance. This might catch any problems that might occur at the JNI level. Of course, if the third-party library has bugs and corrupts the VM heap, there's no much we can do.
    Regards,
    Tony, HS GC Group

  • Memory handling in java

    how to increase size of java program......can it be possible.......
    i faced this question in the interview......
    waiting for your answer....

    Type java -X on command line. You should get this.
        -Xmixed           mixed mode execution (default)
        -Xint             interpreted mode execution only
        -Xbootclasspath:<directories and zip/jar files separated by ;>
                          set search path for bootstrap classes and resources
        -Xbootclasspath/a:<directories and zip/jar files separated by ;>
                          append to end of bootstrap class path
        -Xbootclasspath/p:<directories and zip/jar files separated by ;>
                          prepend in front of bootstrap class path
        -Xnoclassgc       disable class garbage collection
        -Xincgc           enable incremental garbage collection
        -Xloggc:<file>    log GC status to a file with time stamps
        -Xbatch           disable background compilation
        -Xms<size>        set initial Java heap size
        -Xmx<size>        set maximum Java heap size
        -Xss<size>        set java thread stack size
        -Xprof            output cpu profiling data
        -Xrunhprof[:help]|[:<option>=<value>, ...]
                          perform JVMPI heap, cpu, or monitor profiling
        -Xdebug           enable remote debugging
        -Xfuture          enable strictest checks, anticipating future default
        -Xrs              reduce use of OS signals by Java/VM (see documentation)
        -Xcheck:jni       perform additional checks for JNI functions
    The -X options are non-standard and subject to change without notice.

  • Change of latest version of java

    hi,
    where can i see the change in java language given by the new release?
    thanks

    I need to know what are the difference between the old version and the latest.I guess your browser isn't able to follow links. Well, here you go, I clicked on the link that the first responded gave you. Mind you, it's not formatted very well:
    SCOPE
    AREA*/*
    COMPONENT
    SYNOPSIS
    RFE
    api
    client/2d
    ImageIO: GIF writer
    [4339415|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4339415]
    imp
    client/2d
    Native Text Rendering Parity
    [4726365|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4726365]
    imp
    client/2d
    Improved hardware acceleration on Windows
    [5104393|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5104393]
    imp
    client/2d
    Single-threaded rendering for OpenGL pipelines
    [6219284|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6219284]
    api
    client/awt
    Pop-up splash screen at beginning of Java startup
    [4247839|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4247839]
    api
    client/awt
    Java applications can access desktop applications
    [6255196|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6255196]
    api
    client/awt
    Improved modal dialogs
    [4080029|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4080029]
    imp
    client/awt
    XAWT is the default Toolkit on Solaris
    [5049146|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5049146]
    api
    client/awt
    Windows system-tray support
    [4310333|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4310333]
    imp
    client/awt
    Better support for input in non-English locales
    [4360364|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4360364]
    imp
    client/awt
    Live resizing
    [6199167|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6199167]
    imp
    client/deploy
    Improved application deployment across browsers
    [6329487|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6329487]
    api
    client/deploy
    Allow JAR files to be shared across installed JREs
    [6271065|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6271065]
    imp
    client/deploy
    Improved user experience in JRE/JDK installer
    [5079209|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5079209]
    imp
    client/deploy
    Improved security
    [6222485|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6222485]
    imp
    client/deploy
    Direct execution of JAR files on Linux
    [6211008|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6211008]
    imp
    client/deploy
    Improved desktop integration in Java Web Start
    [4625362|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4625362]
    imp
    client/deploy
    Improved IFTW installer
    [6198632|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6198632]
    imp
    client/deploy
    Improved startup & footprint for plugin/webstart
    [6329480|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6329480]
    imp
    client/deploy
    Mozilla Firefox browser support
    [6216340|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6216340]
    imp
    client/deploy
    Default Java on Linux
    [6211006|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6211006]
    imp
    client/deploy
    Improved user experience in Java Plug-in and Java Web Start
    [6205064|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6205064]
    imp
    client/deploy
    Unified download engine
    [4802551|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4802551]
    imp
    client/deploy
    Support Mozilla and Firefox family browsers.
    [6216340|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6216340]
    api
    client/dnd
    A way to avoid hangs on retrieval of clipboard data
    [4818143|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4818143]
    imp
    client/i18n
    Support for important locales
    [4324505|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4324505]
    imp
    client/i18n
    Japanese calendar
    [4609228|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4609228]
    api
    client/i18n
    Resource bundle enhancements
    [5102289|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5102289]
    api
    client/i18n
    Normalizer API
    [4221795|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4221795]
    api
    client/i18n
    Pluggable locales: Pluggability for break iterators
    [4052440|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4052440]
    api
    client/i18n
    Pluggable locales: Pluggability for locale names, formatters, and collators
    [4052440|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4052440]
    imp
    client/l10n
    Chinese localization for JDK tools
    [6209342|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6209342]
    imp
    client/swing
    GTK Native L&F Fidelity
    [6185456|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6185456]
    imp
    client/swing
    Through-the-stack: Reduced footprint / startup time
    [6329480|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6329480]
    imp
    client/swing
    Native look & feel fidelity <!--
    <blockquote>
    JSR 15: Image IO Framework
    <br>
    JSR 183: Web Services Message Security APIs
    <br>
    JSR 185: Java Technology for the Wireless Industry
    </blockquote>
    -->
    imp
    client/swing
    Avalon Look-and-Feel
    [6329475|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6329475]
    api
    client/swing
    JTable sorting, filtering, and highlighting
    [4747079|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4747079]
    api
    client/swing
    JTabbedPane: Tabs as Components
    [4499556|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4499556]
    imp
    client/swing
    Windows native L&F fidelity
    [5106661|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5106661]
    api
    client/swing
    SwingWorker
    [4681682|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4681682]
    api
    client/swing
    Improve Drag & Drop features for Swing Components
    [4468566|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4468566]
    api
    client/swing
    Extend SpringLayout
    [4726194|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4726194]
    api
    client/swing
    Text Document Printing
    [4791649|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4791649]
    imp
    client/swing
    Improved Painting Performance (fix grey boxes)
    [4967886|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4967886]
    jsr
    core/core
    [JSR 223|http://jcp.org/en/jsr/detail?id=223]: Scripting for the Java Platform
    [6249843|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6249843]
    api
    core/debug
    Multiple Simultaneous Agents
    [4772582|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4772582]
    api
    core/debug
    Added Heap Capabilities to JPDA
    [4914266|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4914266]
    api
    core/debug
    Attach-on-demand
    [6173612|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6173612]
    api
    core/debug
    JVMPI and JVMDI have been removed.
    [4914266|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4914266]
    api
    core/jndi
    Read-timeout specification for LDAP operations
    [6176036|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6176036]
    api
    core/libs
    Array Reallocation API
    [4655503|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4655503]
    imp
    core/libs
    BigDecimal optimizations for specjbb++
    <!--6177836-->
    api
    core/libs
    Floating point: Add IEEE 754 recommended functions to java.lang.{{,Strict}Math}
    [4406429|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4406429]
    api
    core/libs
    Standard service-provider API (java.util.Service)
    [4640520|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4640520]
    api
    core/libs
    Collections and Concurrency Updates
    [6268386|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6268386]
    api
    core/libs
    IO Enhancement: Password Prompting
    [4050435|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4050435]
    api
    core/libs
    IO Enhancement: File Attributes
    [6216563|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6216563]
    api
    core/libs
    IO Enhancement: Method for Discovering Free Disk Space
    [4057701|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4057701]
    imp
    core/libs
    IO Enhancement: Long pathnames on Windows
    [4403166|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4403166]
    api
    core/libs
    Low-level Java compiler API for IDEs
    [4813736|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4813736]
    jsr
    core/libs
    [JSR 202|http://jcp.org/en/jsr/detail?id=202]: Java Class File Specification Update
    [4639391|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4639391]
    jsr
    core/libs
    [JSR 199|http://jcp.org/en/jsr/detail?id=199]: Java compiler API
    [4164450|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4164450]
    imp
    core/libs
    Improved perceived footprint
    [6280693|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6280693]
    api
    core/libs
    Deques
    [6192552|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6192552]
    api
    core/libs
    Navigable Maps and Sets
    [4155650|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4155650]
    imp
    core/libs
    BitSet Updates
    [4963875|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4963875],
    [4979017|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4979017],
    [4979028|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4979028],
    [4979031|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4979031],
    [5030267|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5030267],
    [6222207|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6222207],
    [6404711|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6404711]
    imp
    core/libs
    Performance Improvements when compiling using network file systems
    [4770745|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4770745]
    imp
    core/m&m
    Improved diagnosability of OutOfMemoryError
    [6173515|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6173515]
    api
    core/m&m
    Generic annotations for MBean descriptor contents
    [6221321|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6221321]
    api
    core/m&m
    Support for java.util.concurrent locks in the lock related facility
    [5086470|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5086470]
    imp
    core/m&m
    jconsole is more user-friendly
    [6174397|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6174397]
    api
    core/m&m
    Small-scale improvements to JMX Monitor API
    [6222961|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6222961]
    api
    core/m&m
    descriptors added to all types of MBean
    [6204469|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6204469]
    api
    core/m&m
    MXBeans added to JMX
    [6175517|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6175517]<!-- not in beta
    <tr>
    <td>imp</td>
    <td>core/m&m</td>
    <td>Improved crash/core-dump handling</td>
    <td>6309336</td>
    </tr>
    -->
    api
    core/net
    Light-weight HTTP server
    [6270015|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6270015]
    api
    core/net
    Internationalized resource identifiers
    [5085902|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5085902]
    api
    core/net
    Default CookieManager implementation
    [6244040|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6244040]
    imp
    core/net
    SPNEGO HTTP authentication
    [6260531|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6260531]
    api
    core/net
    International domain names
    [4737170|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4737170]
    api
    core/net
    Programmatic access to network parameters
    [4691932|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4691932]
    imp
    core/sec
    Native platform GSS integration
    [6202035|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6202035],
    [6345202|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6345202]
    imp
    core/sec
    SPNEGO in Java GSS
    [6239635|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6239635]
    imp
    core/sec
    MS CAPI Keystore provider
    [6318171|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6318171]
    imp
    core/sec
    Better support for NSS keystore
    [6273877|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6273877]
    imp
    core/sec
    Improved Policy performance
    [5037004|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5037004]
    imp
    core/sec
    [JSR 268|http://jcp.org/en/jsr/detail?id=268]: Java Smart Card I/O API
    [6239117|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6239117]
    jsr
    core/sec
    [JSR 105|http://jcp.org/en/jsr/detail?id=105]: XML DSig
    [4635230|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4635230]
    api
    core/sec
    Enhance certificate APIs
    [4635060|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4635060]
    jsr
    core/tools
    [JSR 269|http://jcp.org/en/jsr/detail?id=269]: Standard pluggabilty API for annotation processors (APT)
    [6222574|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6222574]
    imp
    core/tools
    javac: Support for split verification
    [6227862|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6227862],
    [6227862|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6227862],
    [5110170|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5110170],
    [5110184|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5110184],
    [6217263|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6217263]
    imp
    core/tools
    javac: Implement
    [JSR 175's|http://jcp.org/en/jsr/detail?id=175]
    java.lang.SuppressWarnings
    [4986256|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4986256]
    imp
    core/tools
    Class-path wildcards
    [6268383|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6268383]
    jsr
    ee/ee
    [JSR 250|http://jcp.org/en/jsr/detail?id=250]: Common annotations
    [6304697|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6304697]
    imp
    ee/jdbc
    Extended JDBC-ODBC bridge to enable JDBC 4.0 EoD features
    [6290312|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6290312]
    jsr
    ee/jdbc
    [JSR 221|http://jcp.org/en/jsr/detail?id=221]: JDBC 4.0
    [6290312|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6290312]
    imp
    ee/xml
    JAXP 1.4
    bq. [JSR 206|http://jcp.org/en/jsr/detail?id=206]: Java API for XML Processing
    [6317994|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6317994]
    jsr
    ee/xml
    Support for the Web Services stack
    bq. [JSR 222|http://jcp.org/en/jsr/detail?id=222]: JAXB 2.0 \\ [JSR 224|http://jcp.org/en/jsr/detail?id=224]: JAX-RPC 2.0[JSR 173|http://jcp.org/en/jsr/detail?id=173]: STAX[JSR 181|http://jcp.org/en/jsr/detail?id=181]: Web Services Metadata
    [6245626|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6245626]
    <!-- sub JSRs of Web Services stack covered in prior entry
    <tr>
    <td>jsr</td>
    <td>ee/xml</td>
    <td>JSR 222: JAXB 2.0</td>
    <td>6245626</td>
    </tr>
    <tr>
    <td>jsr</td>
    <td>ee/xml</td>
    <td>JSR 224: JAX-RPC 2.0</td>
    <td>6245626</td>
    </tr>
    -->
    api
    ee/xml
    JavaBeans Activation Framework (JAF)
    [6254474|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6254474]
    imp
    vm/compilers
    Improved performance of compiled code
    [5079711|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5079711],
    [6206844|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6206844],
    <!--
    6229114,
    -->
    [6239807|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6239807],
    <!--
    6269053
    -->
    [4850474|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4850474],
    [5003419|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5003419],
    [5004907|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5004907],<!--
    5007322,
    -->
    [5101346|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5101346],
    [6190413|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6190413],
    [6191063|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6191063],
    [6196383|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6196383],
    [6196722|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6196722],
    [6211497|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6211497],
    [6232485|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6232485],
    [6233627|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6233627],
    [6245809|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6245809],[6251002|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6251002],<!--
    6261602,
    -->
    [6262235|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6262235],
    <!--
    6264252,
    6284962
    -->
    imp
    vm/c1
    Linear scan register allocator for C1
    [6320351|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6320351]
    imp
    vm/c2
    Improved loop optimization
    <!--
    5010187,
    -->
    [5073662|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5073662],
    [5074608|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5074608],
    [5091921|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5091921],
    [6260293|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6260293]
    imp
    vm/c2
    Escape analysis
    <!--
    5074913,
    -->
    [6339956|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6339956]
    imp
    vm/c2
    Lock coarsening
    [6245809|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6245809]
    imp
    vm/gc
    CMS: Parallelize concurrent marking
    imp
    vm/gc
    Parallel compaction<!--
    4743071
    -->
    imp
    vm/runtime
    Improve uncontended synchronization performance <!--
    6264252
    -->
    imp
    vm/runtime
    Improved performance of contended synchronization operations<!--
    5030359
    -->
    imp
    vm/runtime
    Faster format checker/class-file parser<!--
    4990299
    -->
    imp
    vm/runtime
    Improved startup time
    [6179212|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6179212]
    imp
    vm/runtime
    Improved runtime performance<!--
    6237688
    -->
    imp
    vm/runtime
    Improved JNI performance
    [5086424|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5086424]
    imp
    vm/runtime
    Class circularity detection
    [4699981|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4699981]
    imp
    vm/runtime
    DTrace support in the VM

  • JNI method call performance

    Hi ,
    I need to call C++ from java.
    I want to have 10 methods that return primitives and call each one after the other.
    Is it better performance (beside the general fact that 10 method calls is more time then 1) to call one method and return a structure of primitives ?
    Will it be much worse performance then calling this methods if they were written in java and not in C++ ?

    You can create a Java object in JNI (you can use an Object array, a String array if you have only Strings, or a true Java class object if you really do not like referring to fields by indexes) and return it. It is a laborious task, but not a complicated issue.
    Performance issues: the java.util.BigInteger was programmed in JNI in earlier versions of the JDK. Today the JIT compiler produces acceptable code, so java.util.BigInteger does not use JNI code anymore - it is Pure Java. It is good enough to produce RSA digital signatures.

  • Malloc()/free() performance in JNI C code 9-10x slower than C application

    I posted this as a bug report, but thought it might be worth also seeking advice here.
    I'm working on a product under Windows which is integrated using JNI to a 3rd party file format conversion C++ library which uses a lot of new/delete (malloc/free) calls. I found the performance to be dramatically slower when running under Java compared to a standalone executable.
    After many steps, I eventually wrote a small C program which simply loops over many malloc/free calls for 16 bytes, and took an average time. I found when I run this C program in a cmd.exe window, it runs about 9-10 times faster than if it is executed via JNI (Java calls the routine just once).
    I can only guess that the JVM is somehow over-riding malloc/free, but this is an extremely high performance penalty. I found under Java 6, the JNI code runs about 5x slower, which is an improvement, but still very slow.
    Does anyone know if this behaviour is expected?
    Cheers,
    David
    EXPECTED VERSUS ACTUAL BEHAVIOR :
    EXPECTED -
    I would have expected that the performance of malloc/free to be the same regardless of whether my native code is executing inside a JNI call, or as an ordinary program.
    ACTUAL -
    For Java 1.5.0_0-b03, some example timings in milliseconds (Pentium 4 1.8GHz):
    0.004461
    0.004494
    0.004498
    For Java 1.6.0-b105:
    0.002367
    0.002375
    0.002366
    When run as a process in a cmd.exe window:
    0.000487
    0.000497
    0.000489
    REPRODUCIBILITY :
    This bug can be reproduced always.
    ---------- BEGIN SOURCE ----------
    Java code is just:
    package com.nuix;
    public class Test
        private static native void doit();
        public static void main(String[] args)
            System.loadLibrary("test.dll");
            doit();
    }C code is as follows (#define JAVA when building test.dll).
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #define COUNT 10000000
    void doit()
        DWORD t1 = GetTickCount();
        for (int i = 0; i < COUNT; i++)
            int *data = (int *)malloc(16);
            data[0] = i;
            free(data);
        DWORD t2 = GetTickCount();
        fprintf(stderr, "Malloc average time msec == %f\r\n", (double)(t2 - t1) / (double)(COUNT));
        fflush(stderr);
    #ifdef JAVA
    #include <jni.h>
    #ifdef __cplusplus
    extern "C" {
    #endif
    JNIEXPORT void JNICALL Java_com_nuix_Test_doit
      (JNIEnv *env, jclass klass)
        doit();
    #ifdef __cplusplus
    #endif
    #endif
    int main()
        doit();
    }

    The speed of which Java executes is highly dependent on what device you are running it on. For example we have noted that a number of our J2ME programs run very slowly on many Motorola implementations, however that exact same code runs increadible fast on Nokia phones.
    You can't really make a broad sweeping statment like C# is faster than Java and vice versa. All you can really say is that on this specific device with this version of the VM running this application, C# is faster. Changing any of those parameters may result in a significantly different result.
    Really it comes down to what does the device manufacturer really want to support. Nokia has put a lot of effort into their J2ME platforms. As a result, their VM implementations are getting better (and faster) with every release. Other manufacturers are not making this same kind of commitment and as a result, their handsets are less optimal for running J2ME applications.
    So I guess the short answer is. Your question cannot be answered until you identify the version of the device, and the specific version of the VM you ran your test on.
    By the way, if you ran it on an Emulator, all bets are off. Performance on the Emulator and performance are usually different and can be significantly different.
    Cheers,
    Angus

  • Performance of System.loadLibrary in JNI

    I am working on a solution that uses System.loadLibrary to load a dll during the initialisation of an Applet. This is to enable the Applet to use Windows mutex objects. The Applet is downloaded (if not cached) from a remove server as part of an HTML page. The dll is located on the local machine in a directory at the front of the PATH environment variable. The dll is only 40 KB however the System.loadLibrary call takes 4525ms to load the dll. This consitutes 99% of the Applet initialisation time.
    Does any one have any suggestions how I can improve the speed of loading / using this dll?
    Thanks,
    James

    The dll is only 40 KB however the System.loadLibrary call takes 4525ms to load the dll. Perhaps this is because:
    This is to enable the Applet to use Windows mutex objects.and you're doing something wrong.

  • Problem with Jni on Solaris

    Hello I am using a Native code that is working perfect on Windows .
    I have used DllMain calls to initialize my threads .
    I attach my lower stack threads to the JNI by using these methods.
    Well I want to know what is way to put the same functionality on Solaris.As this particular method is specific to Windows Platform only.
    BOOL APIENTRY DllMain( HANDLE hModule,                     // handle to DLL module
    DWORD ul_reason_for_call,      // reason for calling function
    LPVOID lpReserved                // reserved
         BOOL returnValue = FALSE;
    switch (ul_reason_for_call)
              case DLL_PROCESS_ATTACH:
                   // We do not perform any initialization
                   // within this section. Instead we have
                   // chosen to use the JNI_OnLoad function
                   // as the library initialization point.
                   returnValue = TRUE;
                   break;
              case DLL_THREAD_ATTACH:
                   // We are to initialize the thread local storage
                   // variables in this call.
                   if( BridgeUtility::getInstance() -> threadInitialize() != 0 ) {
                        returnValue = FALSE;
                        printf(" Thread initialize failed..\n");
                   }else {
                        printf(" Thread initialize succed..\n");
                        returnValue = TRUE;
                   break;
              case DLL_THREAD_DETACH:
                   // We are to uninitialize the thread local storage
                   // variables in this call.
                   if( BridgeUtility::getInstance() -> threadUninitialize() != 0 )
                        returnValue = FALSE;
                   else
                        returnValue = TRUE;
                   break;
              case DLL_PROCESS_DETACH:
                   // We do not perform any uninitialization
                   // within this section. Instead we have
                   // chosen to use the JNI_OnUnload function
                   // as the library initialization point.
                   returnValue = TRUE;
                   break;

    If your aim is to load the library and initialize it
    that one time, consider using the pthread once routines
    to handle library initialization. See, for example,
    chapter 5 of Butenhof's "Programming with POSIX
    threads".

  • App crash when using JNI callbacks

    Hi all,
    I have a solaris application which crashes when I try to callback the JNI methods from the native code. The description of the problem is below
    Written a native library, the library is multithreaded (i.e) I create a thread using pthread_create() in the native code which performs the operation of calling a JAVA method from the native code. The routine of calling the JAVA method works perfectly from elsewhere.
    There are two scenarios I've tested it in
    1. I created a thread (say X) from the main thread (say Y) and made the y to wait until the X is complete using the pthread_join(). The JAVA callbacks work fine when called from Y but the app crashes if done from X.
    2. Did not make the Y to wait until the X is complete, hoping that both will run paralelly and even the the App crashes.
    And to be precise the Y is the thread where the native method is called from JAVA.
    I have tested for any memory leaks or stack corruption by removing the JAVA callbacks and bulding a executable and using purify, the report doesnot hint any such occurances.
    The linker options used for building the shared library is as follows
    ${GPP} ${INC} -G ${LIB} -mt -g -lCstd -lCrun -lpthread ${OBJS} -o <lib-name>
    I wonder if we can create threads in the native code when using JAVA callbacks and even if we can whether it would be appropiate to use the callbacks with in the threads
    Looking forward for any help.
    Regards,
    Vamsi

    Guys... can't any one help me with this problem :(

Maybe you are looking for

  • Transfer iPhone backup to new macbook pro from old macbook pro

    I bought a new macbook pro last week, but, I need to transfer my iTunes library (music, apps, podcast, photos, other) from my old macbook pro to my new macbook pro and the iPhone backup, off course, please, I have read entire hours on google but I ca

  • VPN with more than one filter / nested ACL

    Dear All, Is there a way to assign more than one ACL to a VPN profile or implement a nested ACL structure? I am trying to avoid modifing a large list of ACLs to insert the same ACE in each ACL bound to different VPN profiles.

  • Problem with displayinh Java Applets

    Hi I've recently downloaded the latest version of Java Plug in and I'm expierencing problems that the applet doesn't load instead I'm getting an "X" on the left hand corner, this happens 95% of the time,any help? I appreciate your quick response. Tha

  • Adobe InDesign Licence doesn't work any more

    Hi folks. Since Adobe doesn't provide any help I have to turn to you now. It says: Error 150:30 - my licence isn't valid any more. For the record, I have InDesign CS4 and a Mac 10.7.5. Any ideas? Thank you very much!!

  • Why do new events appear at the top of my library?

    In older version of iPhoto, when you imported photos, it would make a new event at the bottom of your library where I wanted it to be In the new version, when importing it places new events right at the top of my library, meaning I have to go all the