Tracking the JVM Process?

Hi all,
I need to find the java processes which are hanged in my system and need to kill it by programmatically.
is it possible to trace the loaded applications in my JVM?? and I need to know which is hanged and which is running normally.
+(I found that I can list the Java processes in the OS Level and I can able to kill it programmaticaly.+
but Im not able to find the application which is actually hanged UP in the machine by that approach.
and approaching by OS Level is not a gud approach too. bcoz my application must be platform independent.)
So is there any way to approach through JVM and kill the process??
kindly let me know If u hav any solution.
Thanks & Regards,
Selvaprabhu

OS Level is not a gud approach too. bcoz my application must be platform independent.)
So is there any way to approach through JVM and kill the process??
kindly let me know If u hav any solution.http://www.catb.org/~esr/faqs/smart-questions.html#writewell
How To Ask Questions The Smart Way
Eric Steven Raymond
Rick Moen
Write in clear, grammatical, correctly-spelled language
We've found by experience that people who are careless and sloppy writers are usually also careless and sloppy at thinking and coding (often enough to bet on, anyway). Answering questions for careless and sloppy thinkers is not rewarding; we'd rather spend our time elsewhere.
So expressing your question clearly and well is important. If you can't be bothered to do that, we can't be bothered to pay attention. Spend the extra effort to polish your language. It doesn't have to be stiff or formal — in fact, hacker culture values informal, slangy and humorous language used with precision. But it has to be precise; there has to be some indication that you're thinking and paying attention.
Spell, punctuate, and capitalize correctly. Don't confuse “its” with “it's”, “loose” with “lose”, or “discrete” with “discreet”. Don't TYPE IN ALL CAPS; this is read as shouting and considered rude. (All-smalls is only slightly less annoying, as it's difficult to read. Alan Cox can get away with it, but you can't.)
More generally, if you write like a semi-literate b o o b you will very likely be ignored. So don't use instant-messaging shortcuts. Spelling "you" as "u" makes you look like a semi-literate b o o b to save two entire keystrokes.

Similar Messages

  • How to determine the size of the JVM process?

    Hi,
    How to determine the total process size of the JVM process (that includes Heap, Non Heap and Native memory)?
    Is there any command to obtain this value on Solaris (for Sun JVM)?
    I refer the process size to http://middlewaremagic.com/weblogic/wp-content/uploads/2010/11/Java_Heap_Diagram_12.jpg) here.
    Many thanks for your help in advance!

    Hi,
    Make sure that Total Heap + Native memory will be consider as total Memory.
    That means in 32 bit you will have only at most 4 GB for process + additional 2 GB for OS.
    So let assume if you have 4GM RAM then out of the 4GB you can allocate 2GB as Heap and 512m as Perm in case of Hot spot and remaining will be consider as Native memory.
    But in case of 64 bit will change you will have good amount of the memory so you can use plenty of Heap and Perm size.
    Still if you have query let me know.
    Regards,
    Kal

  • Anybody could told me when the JVM process will disappear?

    1.The system is RHEL5.1 and PC is my private machine, not connect to internet or local network.
    2.I was had a tomcat performance test, login as "tomcat" and start tomcat server, it's pid was 8902.
    3. after 12 hours, I relogin to the server but can not found process 8902.
    4.I could not found any hs_err_pid.log and core.pid file under "tomcat" home, and only myself use this machine.
    5. the jvm process have enough privilege for the file read and write.
    So, I lost my road, why the jvm process will disappear and not leave any mark? thank you for help me !

    Roy_Li wrote:
    1.The system is RHEL5.1 and PC is my private machine, not connect to internet or local network.
    2.I was had a tomcat performance test, login as "tomcat" and start tomcat server, it's pid was 8902.I don't know how you start it, but it's possible that your program gets a hangup signal and quits when you logout. You should in that case start it with nohup.
    [http://en.wikipedia.org/wiki/Nohup]
    Kaj

  • What's in the JVM Process's Memory Space?

    Hello
    I'm noticing the following behavior on an NT system. On
    application startup, I see
    Total Heap 9 MB
    Used Heap 5.5 MB
    java.exe memory (from NT Task Manager) 36 MB
    After a "login" operation which loads a few more
    classes:
    Total Heap 12.5 MB
    Used Heap 8.2 MB
    java.exe memory (from NT Task Manager) 53 MB
    Heap memory leaks have been ruthlessly suppressed
    (thanks to OptimizeIt and careful programming). The
    behavior I do not understand is that the NT process
    (java.exe) increased in size by 17 MB when the Java
    heap increased by only 3 MB. The .jar file in which the
    application resides is less than 1 MB, so this 14 MB
    growth can not be attributed to new classes being
    loaded.
    Does anyone know what is going into the process
    memory space of java.exe? It tends to grow larger
    and larger.
    Should I even care? Do I want a large allocation of
    process memory for java.exe, or will that hamper
    performance of machines with less physical memory?
    Posts on related topics in this forum have sometimes
    advocated allocating a lot of memory to the JVM with
    -X options.
    Thanks

    Hello
    I am facing exactly the same problem on NT. However, on 2000 Server this problem doesn't seem to exist. Are you, by any chance, using JNI? We are extensively using JNI in our Servlets and found that there is definitely some momory leak there. We could not figure out any substantial leak at Java end. In NT's "Task Manager" java.exe is always listed first and very rarely the memory usage seems to come down. On 2000 Server the performance is far better.
    Please visit this link:
    http://forum.java.sun.com/thread.jsp?forum=33&thread=211330
    Regards
    Manish Bhatnagar

  • How to track the inserting process

    Hi experts,
    Currently, I have a table that is feed by my customer. When the feeding process completes, then I start another process that using those data. However, sometimes the feed process took a bit longer than norm, then I had an issue when I use that data because some data was missing. The feeding process start in specific time, but I do not know when it finishes.
    My question is: Is there any way on database site (trigger, backgroud process,...) that can 'buzz' me when the feeding process complete?
    Thanks in advance.
    Hieu

    HieuLe wrote:
    Hi experts,
    Currently, I have a table that is feed by my customer. When the feeding process completes, then I start another process that using those data. However, sometimes the feed process took a bit longer than norm, then I had an issue when I use that data because some data was missing. The feeding process start in specific time, but I do not know when it finishes.
    My question is: Is there any way on database site (trigger, backgroud process,...) that can 'buzz' me when the feeding process complete?
    Thanks in advance.
    HieuHave the process inform you seems to be the best way.
    One method (of a countless number i'm sure), have it record it's activity in some sort of log table. Something with a Start_Date (which you apparently know) and an End_Date (which would be NULL until the process finishes) ... then your process could poll that table and take action when the End_Date is NOT NULL.

  • Solaris JVM Process Growth

    Hi,
    I am investigating a problem where we experience continual growth of our JVM process. The overall process size and native heap size of the JVM process continually grow at the same rate. I am monitoring these using the commands 'ps - o pid,vsz,rss' and 'pmap -x' respectively. The increases are in multiples of 8Kb.
    I have checked our java application using Optimizeit and it is not leaking memory. I have also monitored the size of the VM java heap using the '-verbose:gc' garbage collection debugging option. Garbage collection appears normal and the VM heap size remains below that specified by the '-Xmx' option.
    It appears that the memory growth is occurring in native code of the JVM process but I am at a loss on how to determine what is causing this. Can anyone advise me what may be causing this JVM process growth or ways in which I may be able to find this out?
    I am using JRE 1.4.2 SE (1.4.2_08_b03) on Solaris 8. Within the JVM we are running our web app in Tomcat 4.1.
    The shared libraries loaded by the JVM (as shown by pldd) are:
    /usr/lib/libthread.so.1
    /usr/lib/libdl.so.1
    /usr/lib/libc.so.1
    /usr/platform/sun4u/lib/libc_psr.so.1
    /vob/ntg-thirdparty/java/j2sdk1.4.2_08/jre/lib/sparc/client/libjvm.so
    /usr/lib/libCrun.so.1
    /usr/lib/libsocket.so.1
    /usr/lib/libnsl.so.1
    /usr/lib/libm.so.1
    /usr/lib/libsched.so.1
    /usr/lib/libmp.so.2
    /vob/ntg-thirdparty/java/j2sdk1.4.2_08/jre/lib/sparc/native_threads/libhpi.so
    /vob/ntg-thirdparty/java/j2sdk1.4.2_08/jre/lib/sparc/libverify.so
    /vob/ntg-thirdparty/java/j2sdk1.4.2_08/jre/lib/sparc/libjava.so
    /vob/ntg-thirdparty/java/j2sdk1.4.2_08/jre/lib/sparc/libzip.so
    /vob/ntg-thirdparty/java/j2sdk1.4.2_08/jre/lib/sparc/libjdwp.so
    /vob/ntg-thirdparty/java/j2sdk1.4.2_08/jre/lib/sparc/libdt_socket.so
    /usr/lib/nss_files.so.1
    /vob/ntg-thirdparty/java/j2sdk1.4.2_08/jre/lib/sparc/libnet.so
    /vob/ntg-thirdparty/tibco/rv-7.1/sol28/lib/libtibrvj.so
    /vob/ntg-thirdparty/tibco/rv-7.1/sol28/lib/libtibrvcmq.so
    /vob/ntg-thirdparty/tibco/rv-7.1/sol28/lib/libtibrvcm.so
    /vob/ntg-thirdparty/tibco/rv-7.1/sol28/lib/libtibrvft.so
    /vob/ntg-thirdparty/tibco/rv-7.1/sol28/lib/libtibrv.so
    /usr/lib/libpthread.so.1
    /vob/ntg-thirdparty/java/j2sdk1.4.2_08/jre/lib/sparc/libnio.so
    /usr/lib/librt.so.1
    /usr/lib/libaio.so.1
    /usr/lib/libsendfile.so.1
    /vob/ntg/dev/resources/lib/sol8gcc/libjavaperljni.so
    /vob/ntg/dev/thirdparty/perl-5.8.0-gcc-thread/lib/libperl.so
    /usr/lib/libw.so.1
    /vob/ntg/dev/resources/lib/sol8gcc/libstdc++.so.2.10.0
    /vob/ntg-thirdparty/java/j2sdk1.4.2_08/jre/lib/sparc/libioser12.so
    /vob/ntg-thirdparty/java/j2sdk1.4.2_08/jre/lib/sparc/libawt.so
    /vob/ntg-thirdparty/java/j2sdk1.4.2_08/jre/lib/sparc/libmlib_image.so
    /vob/ntg-thirdparty/java/j2sdk1.4.2_08/jre/lib/sparc/headless/libmawt.so
    /vob/ntg-thirdparty/java/j2sdk1.4.2_08/jre/lib/sparc/libcmm.so
    /vob/ntg-thirdparty/java/j2sdk1.4.2_08/jre/lib/sparc/libfontmanager.so
    /vob/ntg-thirdparty/java/j2sdk1.4.2_08/jre/lib/sparc/libdcpr.so
    /vob/ntg-thirdparty/java/j2sdk1.4.2_08/jre/lib/sparc/libjpeg.so
    Any Help is much appreciated.

    Hi
    If u can, use 1.4.2_10 (latest as of now). There is a bug 6250517, fixed in _09. Not sure if u r making any calls to NetworkInterface.getNetworkInterfaces.
    Also noticed that you are using tibco. How about putting -Xcheck:jni and see if it picks up anything.
    Unfortunately Solaris 8 didnt have libumem for tracking memory allocation. If u have any Solaris 9/10 boxes, you can use libumem to track it down.
    http://access1.sun.com/techarticles/libumem.html

  • How to monitor the wrapper process flows

    Hi,
    I have a process flow(main wrapper) which contains the 2 child process flows(child_PF1, child_PF2). which looks like below.
    start -> Child_PF1 -> Child_PF2 -> end
    I am able to run the the process flows successfully. I want to monitor the process flows and the % of completion of the process flow.
    I am able to check the parent and child process flows seperately. I am unable to link the parent process flow to its child work flows. Can anyone explain how to link/track the Parent process flow to its child process flows.
    When i open the Parent process flow i was able to see the child process flow as an operator. But i was not able to view the contents child process flow further.
    Oracle Workflow server version is 2.6.4
    OWB version is 10.1.0.4
    Thanks in Advance,
    SriGP.

    Hi,
    the following SQL works with OWB 10.2.
    SELECT to_char(x.created_on,'dd.mm. hh24:mi') as created_on,
           --x.root_id as r_id,
           sys_connect_by_path(x.map_name, '/') AS NAME,
           step_name as target,
           --x.map_name as map_name,
           --x.run_status,
           x.number_records_updated + x.number_records_inserted + x.number_records_merged + x.number_records_deleted AS "#R",
           --x.number_records_selected AS "#S",
           --x.number_records_inserted AS "#I",
           --x.number_records_updated AS "#U",
           --x.number_records_merged AS "#M",
           --x.number_records_deleted AS "#D",
           NVL(x.elapse_time, round((x.updated_on - x.created_on) * 86400)) AS secs,
           x.status
      FROM (SELECT r.top_level_execution_audit_id AS root_id,
                   r.parent_execution_audit_id AS parent_id,
                   r.execution_audit_id AS audit_id,
                   r.created_on,
                   r.updated_on,
                   coalesce(substr(m.map_name, 2, length(m.map_name) - 2), r.execution_name) AS map_name,
                   r.return_result,
                   s.elapse_time,
                   m.run_status,
                   s.number_records_selected,
                   s.number_records_inserted,
                   s.number_records_updated,
                   s.number_records_merged,
                   s.number_records_deleted,
                   s.step_name,
                   s.run_status as step_status,
                   s.elapse_time as step_time,
                   s.step_id,
                   p1.VALUE AS p1,
                   coalesce(e.run_error_message, msg.message_text, s.run_status, m.run_status, r.return_result, 'RUNNING') AS status,
                   msg.message_text
              FROM all_rt_audit_executions r,
                   all_rt_audit_map_runs m,
                   all_rt_audit_map_run_errors e,
                   all_rt_audit_step_runs s,
                   (SELECT execution_audit_id,
                           message_text
                      FROM all_rt_audit_exec_messages
                     WHERE message_line_number = 1) msg,
                   (SELECT p.execution_audit_id,
                           p.parameter_name,
                           p.parameter_kind,
                           p.VALUE
                      FROM all_rt_audit_execution_params p
                     WHERE p.parameter_kind = 'CUSTOM'
                       AND p.parameter_name = 'OTIM_ID') p1
             WHERE 1 = 1
               AND r.execution_audit_id = p1.execution_audit_id(+)
               AND m.map_run_id = e.map_run_id(+)
               AND m.map_run_id = s.map_run_id(+)
               AND r.execution_audit_id = m.execution_audit_id(+)
               AND r.execution_audit_id = msg.execution_audit_id(+)) x
    WHERE 1 = 1
       AND x.created_on > trunc(SYSDATE) - 0
    CONNECT BY x.parent_id = PRIOR x.audit_id
    START WITH x.parent_id IS NULL
    ORDER SIBLINGS BY x.root_id DESC, x.audit_id DESC, x.step_id DESCMaybe your are lucky and it will work also with OWB 10.1.
    Regards,
    Carsten.

  • Capturing stdout from JVM process

    Hi,
    Using JNI native methods I call functions in a shared C library from my Java program. I do not have access to the shared library source code. The shared library writes informational messages to stdout. I want to be able to capture these messages and display them in my Java GUI as they occur. I need a cross-platform solution because the Java program needs to run on both Windows and Linux.
    I have googled and searched the JavaSoft forums but I cannot find an answer to what I am trying to do. I have seen answers on how to do it if you are using Runtime.exec methods, but I am not doing that. Also, redirection on the command line will not work since I want to show these messages as they occur in my GUI.
    I have thought of redirecting stdout to a pipe in the JNI code and using select to read the bytes off the pipe. Then sending the bytes up to a Java object. All this would run in a separate thread. But this seems overly complicated.
    Any suggestions?
    charlie

    I developed a solution to this problem using named pipes. It works well on Linux (2.6 kernel) and it may work on Windows but I don't know. Example code follows. I would be most interested in any feedback on this solution or on the code itself.
    There are 2 files, StdoutRedirect.java and StdoutRedirect.c.
    1) Compile the java file and run javah on it to get StdoutRedirect.h.
    2) Compile the C file into a shared library, here's a makefile:
    StdoutRedirect: StdoutRedirect.o
    gcc -shared -o libStdoutRedirect.so StdoutRedirect.o
    3) Run the java class file.
    charlie
    **** StdoutRedirect.java ****
    import java.io.FileNotFoundException;
    import java.io.IOException;
    * This class, along with its JNI library, demonstrates a method of redirecting stdout of the JVM process to a Java
    * Reader thread. Using this method the stdout bytes can be sent anywhere in the Java program; e.g., displayed in a GUI.
    * This has only been tested on a Linux 2.6 kernel.
    public class StdoutRedirect {
        static {
            System.loadLibrary("StdoutRedirect");
        final static public String NAMED_PIPE = "/tmp/stdoutRedirect";
        native private void setupNamedPipe();
        native private void redirectStdout();
        native public void someRoutine();
        // Flag to indicate to Reader thread when to terminate
        protected boolean keepReading = true;
        public static void main(String[] args) throws IOException {
            StdoutRedirect redir = new StdoutRedirect();
            redir.setupNamedPipe();
            // The first reader or writer to connect to the named pipe will block. So, the reader
            // must be opened first and must be in a new thread. We want it to be in a separate
            // thread anyways so we can receive data asynchronously.
            redir.openReader();
            // At this point, the reader thread is blocked on creating the FileInputStream
            // because it is the first thing to connect to the named pipe. We grab the lock
            // here and redirect stdout to the named pipe. This opens a writer on the named
            // pipe and the reader thread will unblock. We want to wait for the reader thread
            // to unblock and be ready to receive data before continuing.
            synchronized (redir) {
                redir.redirectStdout();
                try {
                    // wait for the reader thread to be ready to receive data
                    redir.wait();
                } catch (InterruptedException e) {
            // write some data to stdout in our C routine
            redir.someRoutine();
            // All done now, so indicate this with our flag
            redir.keepReading = false;
            // The reader thread may be blocked waiting for something to read and not see
            // the flag. So, wake it up.
            System.out.println("Shut down");
            // Make sure everything is out of stdout and then close it.
            System.out.flush();
            System.out.close();
            // stdout is closed. This will not be visible.
            System.out.println("Won't see this.");
         * Starts the reader thread which listens to the named pipe and spits the data
         * it receives out to stderr.
        private void openReader() {
            new Thread() {
                public void run() {
                    try {
                        int BUFF_SIZE = 256;
                        byte[] bytes = new byte[BUFF_SIZE];
                        int numRead = 0;
                        // At this point there is no writer connected to the named pipe so this statement
                        // will block until there is.
                        FileInputStream fis = new FileInputStream(NAMED_PIPE);
                        // The reader thread is ready to accept data. Notify the main thread.
                        synchronized (StdoutRedirect.this) {
                            StdoutRedirect.this.notify();
                        // Keep reading data until EOF or we're told to quit and there is no more data to read
                        while (numRead != -1 && (StdoutRedirect.this.keepReading || fis.available() != 0)) {
                            numRead = fis.read(bytes, 0, BUFF_SIZE);
                            System.err.print("Received - " + new String(bytes, 0, numRead));
                        if (fis != null) {
                            fis.close();
                        System.err.println("Receiver shut down");
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
            }.start();
    } // class StdoutRedirect**** StdoutRedirect.c ****
    #include "StdoutRedirect.h"
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <stdio.h>
    #include <fcntl.h>
    #include <string.h>
    #include <errno.h>
    // The filesystem location for the named pipe
    const char *namedPipe = "/tmp/stdoutRedirect";
    * Create the named pipe we're going to redirect stdout through. After this
    * method completes, the pipe will exist but nothing will be connected to it.
    JNIEXPORT void JNICALL Java_StdoutRedirect_setupNamedPipe(JNIEnv *env, jobject obj) {
      // make sure there is no pre-existing file in our way
      remove(namedPipe);
      // create the named pipe for reading and writing
      mkfifo(namedPipe, S_IRWXU);
    * Redirect stdout to our named pipe. After this method completes, stdout
    * and the named pipe will be identical.
    JNIEXPORT void JNICALL Java_StdoutRedirect_redirectStdout(JNIEnv *env, jobject obj) {
      // Open the write end of the named pipe
      int  namedPipeFD = open(namedPipe, O_WRONLY);
      printf("Before redirection...\n");
      // make sure there is nothing left in stdout
      fflush(stdout);
      // duplicate stdout onto our named pipe
      if ( dup2(namedPipeFD, fileno(stdout)) == -1 ) {
        fprintf(stderr, "errno %s.\n", strerror(errno));
        fprintf(stderr, "Couldn't dup stdout\n");
      printf("After redirection.\n");
      // flushing is necessary, otherwise output does not stay in sync with Java layer
      fflush(stdout);
    * Do some random writing to stdout.
    JNIEXPORT void JNICALL Java_StdoutRedirect_someRoutine(JNIEnv *env, jobject obj) {
      int i;
      for ( i = 0; i < 3; i++ ) {
        printf("Message %d\n", i);
      printf("End of messages\n");
      // flushing is necessary, otherwise output does not stay in sync with Java layer
      fflush(stdout);
    }

  • Does the JVM ever return memory back to the OS?

    Hello Gurus,
    I have an OC4J application running on Solaris that have some memory spikes (the jvm is inovked with -xms256m -xmx1024m).
    I've noted that once the heap expands, even if it shrinks back, the jvm process keeps on using the bigger memory footprint (in other words, maybe the jvm indeed manages a smaller heap size but if I execute the "top" command from a terminal - I never see that memory actually being freed).
    For the math people: my jvm memory consumption is a non-decreasing monotonic function.
    Is that a bug or the designed behavior?
    Thanks in advance!
    Amnon Sadeh.

    The physical memory and swap reservation is indeed returned
    to the OS if it's not in use. The virtual space reservation, however,
    stays.. The JVM is however circumspect/inertial is reacting to
    temporary fluctuations in java heap footprint, and employs
    a hysteretic low-pass-filter to protect against what might be
    small, high frequency fluctuations in the program's heap
    footprint.
    Hello Gurus,
    I have an OC4J application running on Solaris that
    have some memory spikes (the jvm is inovked with
    -xms256m -xmx1024m).
    I've noted that once the heap expands, even if it
    shrinks back, the jvm process keeps on using the
    bigger memory footprint (in other words, maybe the
    jvm indeed manages a smaller heap size but if I
    execute the "top" command from a terminal - I never
    see that memory actually being freed).
    For the math people: my jvm memory consumption is a
    non-decreasing monotonic function.
    Is that a bug or the designed behavior?
    Thanks in advance!
    Amnon Sadeh.

  • How do you change the tempo on a track once you have started the editing process

    I dont know why but i cant figure out how to change the tempo of a track after i have set it before creating the project and begin the editing process on it. i just want to be able to slow the song down because some times i miss the desired tempo range and set it to something completely contrary to what i am trying to do. Please help me because am new to thins. thanks.

    Alieufromwa wrote:
    how to change the tempo of a track project after i have set it
    http://www.bulletsandbones.com/GB/GBFAQ.html#settempo
    (Let the page FULLY load. The link to your answer is at the top of your screen)

  • Regarding the tracking the live progress of the cube processing.

    Hello,
             Good Morning.  As we are having multiple cube applicatons as part of our project, there are multiple cubes for which we need to evaluate the completion time for the cube processing.
    By referencing one cube, the cube processing is taking one hour one day and some other day, It is taking an hour for completion. Beacuse of this reason, we could not be able to asses the time for completion of cube processing.
    Is there any chance to track the live status of the cube processing?. Which means, the expected time for completion? How many measure group processing are completed and how many left?
    Please provide your inputs on this.
    Thanks in advance.
    Regards,
    Pradeep.

    Hi Kumar,
    According to your description, you want to monitor the progress of cube processing. Right?
    In Analysis Services, there are several tools can help us monitor the processing performance, like SQL Profiler, AS Trace, Performance Monitor, etc. We can also use XMLA command or DMV to get the information. Please see:
    Monitoring processing performance
    Monitoring and Tuning Analysis Services with SQL Profiler
    However, if you want to get the exact live data of the cube processing, Olaf's script can be an effective solution to get the current processing status for some measures or dimensions. But some information still can't be traced, like expected time for completion,
    etc. So for your requirement, it can't be fully achieved.
    If you have any question, please feel free to ask.
    Simon Hou
    TechNet Community Support

  • I just downloaded an album and it says the 1st track was still processing at 100% i restarted itunes and now that track is missing from the library, any ideas?

    I just downloaded an album and it says the 1st track was still processing at 100% i restarted itunes and now that track is missing from the library, any ideas?

    Hey Hisheroisgonex,
    Thanks for the question, and welcome to Apple Support Communities.
    If the track is no longer in your iTunes Library, you can re-download using the information in this article:
    Downloading past purchases from the App Store, iBookstore, and iTunes Store
    http://support.apple.com/kb/HT2519
    Thanks,
    Matt M.

  • How to limit the CPU% when invoking another JVM process

    I need to keep the JVM's CPU% into a limitation like 20%, is that possible?
    Thanks in advance.
    Edited by: Lorna_Hu on Feb 4, 2008 11:26 AM
    Edited by: Lorna_Hu on Feb 4, 2008 11:26 AM

    I think you have the same problem with this thread.. check this .
    MyPOV
    Yesterday is history. Tomorrow is mystery. Today is a gift.

  • Custom report to track the documents

    Hai All,
    My Client requires a custom report to track the document flow any time i.e., once the material arrives the purchase dept makes an entry like PO date the date of arrival,and Gr date the GR approval date and document handed over for  Invoice verification date and payment made date.
    How is achieve this?
    Regards
    R.Senthilnambi

    No My client requirement is not like that,suppose one fine day if he wants to track the positon of GRN document or a bill at what stagei.e.,if in FI if they say they have not received any document to process or they hold the document for days and say just today GRN has been handed over to him ,The Materials guy has to generate a report and say this is the day the document is handed over to you.
    Is this can be done.or only out of SAP.
    Regards
    Senthil

  • On the printing slowness of Postscript produced by the JVM from calls to Graphics.drawString() (Linux/Unix)

    Happy new year,
    before the holidays my attention was drawn to an issue that supposedly the Postscript produced by the JVM is too big and hence too slow.  Here are my findings.
    The issue
    Text printing via CUPS to native Postscript printers can be slow. Printing a terms and conditions page (17000 characters/page) takes three and a half minutes to print on a Dell 2330 dn laser printer (96 MB,Max speed 33 ppm). The file is about 8 MB in size. To contrast that, rendering the text to a buffered image with 300 DPI and printing the result produces 7 MB of output which prints in 30 seconds on the same printer. More measures for different printers and documents can be found at the end of this post. The issues is registered as  "JDK-4627340 : RFE: A way to improve text printing performance for postscript devices" (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4627340) and the proposed workaround is to use printer fonts.
    Side remark regarding the workaround
    There is a regression that prevents the workaround from working (bug 9008662 at Sun (not yet visible),  bug 8023990 at OpenJDK (https://bugs.openjdk.java.net/browse/JDK-8023990). Without knowing what other bad side effects this might have, the issue can be resolved by setting the property "sun.awt.fontconfig". On my system I set it to the location of a "fontconfig.properties" of a JVM that does not have the bug (e.g. /home/alex/openjdk_7_b147_jun_11/openjdk/build/linux-i586/bin/java -Dsun.awt.fontconfig="/etc/java-6-openjdk/fontconfig.properties" Print2DtoStream). I also successfully tested the workaround on an Oracle JVM 1.7.0_03-b04.
    Back to the main topic
    How the JVM draws text if it can't use a standard printer font
    Text is drawn with postscript path drawning commands such as "moveto", "lineto" or "curveto". As an example consider the word "ll" which looks something like this:
    %N->short for "newpath"
    N
    %paint first "l"
    %M->short for "moveto"
    0.76875 11.06 M
    %L->short for "lineto"
    0.76875 2.468 L
    1.823 2.468 L
    1.823 11.06 L
    0.76875 11.06 L
    %p->short for "closepath"
    P
    %paint second "l"
    3.649 11.06 M
    3.649 2.468 L
    4.703 2.468 L
    4.703 11.06 L
    3.649 11.06 L
    P
    The same text could be printed with a printer font using the command "(ll) show" which is much more compact but is available in Java only for the Postscript standard fonts and it isn't working at all right now as explained above.
    Is it the file size?
    My first thought was that the file size was the source of of slowness and so I wrote a small processor that would detect glyphs, normalize*1 them and place them in a dictionary. Recurring references to the same glyph were replaced by a dictionary reference  (This is incidentally the fix proposed by the original author of RFE 4627340). This shrunk the file to about 11% of the original size but the processing time surprisingly doubled.
    *1: With "normalizing" I mean applying a translation transform so that the smallest coordinates in the contours of a glyph are exactly 0. In addition I experimented with performing a normalizing scale transform so that all coordinates lie between 0 and 1 so that identical glyphs are detected at arbitrary positions and at different font sizes.
    That led to the question to why there is such a big difference in performance between a Type 1 font dictionary and a self constructed dictionary since both contain basically the same drawing instructions. The difference is apparently that fonts are cached and user drawings are not unless explicitly told.
    The Postscript "ucache" instruction
    Postscript level 2 introduces the "ucache" instruction which seems to be defined for precisely this kind of problem. From the documentation:
    "Some PostScript programs define paths that are repeated many times. To optimize the interpretation of such paths, the PostScript language provides a facility called the user path cache. This cache, analogous to the font cache, retains the results from previously interpreted user path definitions. When the PostScript interpreter encounters a user path that is already in the cache, it substitutes the cached results instead of reinterpreting the path definition. "
    After adding "ucache" instructions to my filter the speed improved by factor 10.
    To illustrate the said the "ll" text from above looked as follows after the transformation:
    %definition of the glyph "l" named "p0"
    /p0
    ucache
    0.000 0.000 1.054 8.592 setbbox
    0.000 8.592 moveto
    0.000 0.000 lineto
    1.054 0.000 lineto
    1.054 8.592 lineto
    0.000 8.592 lineto
    closepath
    } cvlit def
    G
    N
    0.769 2.468 translate
    %draw "l" at 0.769 2.468
    p0 ufill
    -0.769 -2.468 translate
    3.649 2.468 translate
    %draw "l" at 3.649 2.468
    p0 ufill
    -3.649 -2.468 translate
    For ucached shapes there is a special compact representation so that the same can be written as follows:
    /p0
    0.000 0.000 1.054 8.592
    0.000 8.592
    0.000 0.000
    1.054 0.000
    1.054 8.592
    0.000 8.592
    } cvlit def
    G
    N
    0.769 2.468 translate
    p0 ufill
    -0.769 -2.468 translate
    3.649 2.468 translate
    p0 ufill
    -3.649 -2.468 translate
    Interestingly the speed improvement remained the same on a Chinese report that had hardly any character reuse. Upon this observation I changed the filter to not use a dictionary but so simply instruct the interpreter to cache each glyph definition and the performance remained nearly the same.
    The initial "ll" text from above looks as follows after this transformation:
    N
    %paint first "l" cached
    0.76875 2.468 1.823 11.06
    0.76875 11.06
    0.76875 2.468
    1.823 2.468
    1.823 11.06
    0.76875 11.06
    } ufill
    %paint second  "l" cached
    3.649 2.468 4.703 11.06
    3.649 11.06
    3.649 2.468
    4.703 2.468
    4.703 11.06
    3.649 11.06
    } ufill
    Note that I didn't normalize the shapes.
    Why does this improve the performance so vastly if the shape is drawn only once? For a while I thought perhaps that the interpreter would consider two paths which differ only by a translation as being the same but rereading the documentation and looking at the Chinese example in which nearly all characters are unique, disproves this. The relevant part of the documentation reads:
    "Caching is based on the value of a user path object. That is, two user paths are considered the same for caching purposes if all of their corresponding elements are equal, even if the objects themselves are not.
    A user path placed in the cache need not be explicitly retained in virtual memory. An equivalent user path appearing literally later in the program can take advantage of the cached information. Of course, if it is known that a given user path will be used many times, defining it explicitly in VM avoids creating it multiple times.
    User path caching, like font caching, is effective across translations of the user coordinate system, but not across other transformations, such as scaling or rotation. In other words, multiple instances of a given user path painted at different places on the page will take advantage of the user path cache when the current transformation matrix has been altered only by translate. If the CTM has been altered by scale or rotate , the instances will be treated as if they were described by different user paths."
    An explanation that would fit the findings
    The rasterizer renders the page multiple time (perhaps in order to save memory and produce horizontal strips). On the first rendering the cache is filled and reused on the subsequent renderings thereby improving performance even if all cached items are used only once.
    Based upon this theory I hoped that the strip height would grow if I added more memory to the printer but this was not the case on the two printers for which I had memory to test with. Even substantial changes to the available memory (e.g. going from 32 MB to 96 MB) had no impact whatsoever on the performance.
    Summary
    The issue is not related to the file size as the original requester suspected but very likely due to the uncached rendering. Caching of glyphs can be achieved by using the "ucache" instruction or perhaps by placing the glyphs in font dictionaries and using the "show" operator.
    Although reported in 2003, time is apparently not healing this quick enough since printers in the 10,000$ class like the Sharp MX2310U still take a full minute to print 10 pages and a desktop printer may be blocked for over an hour for the same document.
    We will now try to use the CUPS filter and leave the printers configured as Postscript printers. If there is interest I can post the single file source of a CUPS filter that performs the inline conversion described. Apart from libl it requires no additional libraries and written using flex it is reasonably lightweight and fast.
    I would appreciate any opinion on whether or not the proposed workaround for bug 8023990 (https://bugs.openjdk.java.net/browse/JDK-8023990), namely having the system property "sun.awt.fontconfig" pointing to a working fontconfig.properties of a previously installed and working 1.6 version file, is safe.
    Measures (Appendix)
    "Terms and Conditions" report
    Testing a single page "Terms and Conditions" report in "Arial" 8pt (I am aware that "Helvetica" is width compatible and nearly looks the same but in this particular case the line height was also relevant and as explained above, printer fonts are currently not working). The page contains 17000 characters of which some parts are bold and some italic. This is a real world example and to make things worse the requirement is to print the text on the backside of every page on a certain class of reports. I am aware that this is a bit extreme but I also felt that I couldn't dismiss it as being unreasonable.
    File "Arial.ps" (7.5 MB Unmodified output of the JVM)
    Printer
    Printing time
    Dell 2330dn 32MB/96MB
    3:50 minutes
    Lexmark X658de (55 ppm, aprox. 5,000$)
      1:45 minutes
    HP LaserJet 4240n 64 MB
    1:12 minutes
    Kyocera Taskalfa 300ci (30 PPM, aprox. 8,000$)
    1 minute
    HP Color LaserJet 4650 dn 128/384MB
    51 seconds
    Sharp MX 2310U 512MB (55ppm,  aprox. 10,000$)
    31 seconds
    Arial_inline.ps (8 MB contains "ucache" without normalization and without dictionary)
    Printer
    Printing time
    32MB/96MB
    30seconds/30seconds (Improvement by factor 7.7)
    Lexmark X658de (55 ppm, aprox. 5,000$)
      15 seconds (Improvement by factor 7)
    HP LaserJet 4240n 64 MB
    47 seconds (Improvement by factor 1.5)
    Kyocera Taskalfa 300ci (30 PPM, aprox. 8,000$)
    20 seconds (Improvement by factor 5)
    HP Color LaserJet 4650 dn 128/384MB
    46 seconds (Improvement by factor 1.1)
    Sharp MX 2310U 512MB (55ppm,  aprox. 10,000$)
    14 seconds (Improvement by factor 2)
    Asian characters test
    Testing 10 pages of Asian characters in the font "WenQuanYi Zen Hei" 12pt where each page contains 49 lines by 40 unique characters. The document contains the 30,000 characters between unicode 0x4e00 and 0x9fff. This is a nonsense stress test but it illustrates  that the "ucache" speedup works even though no character is repeated in the report.
    Asian.ps  (52 MB Unmodified output of the JVM)
    Printer
    Printing time
    Dell 2330dn 32MB/96MB
    64 minutes
    Lexmark X658de (55 ppm, aprox. 5,000$)
    Not measured
    HP LaserJet 4240n 64 MB
    11 minutes
    Kyocera Taskalfa 300ci (30 PPM, aprox. 8,000$)
    Not measured
    HP Color LaserJet 4650 dn 128/384MB
    9:13 minutes
    Sharp MX 2310U 512MB (55ppm,  aprox. 10,000$)
    4:08 minutes
    Asian_inline.ps (54 MB contains "ucache" without normalization and without dictionary)
    Printer
    Printing time
    32MB/96MB
    5:30 minutes (Improvement by factor 11.6)
    Lexmark X658de (55 ppm, aprox. 5,000$)
    Not measured
    HP LaserJet 4240n 64 MB
    3:48 minutes (Improvement by factor 2.9)
    Kyocera Taskalfa 300ci (30 PPM, aprox. 8,000$)
    Not measured
    HP Color LaserJet 4650 dn 128/384MB
    2:46 minutes (Improvement by factor 3.4)
    Sharp MX 2310U 512MB (55ppm,  aprox. 10,000$)
    48 seconds (Improvement by factor 5)

    Hi Sven,
    Will putting the boilerplate in the trailer section allow me to still have it appearing on the back page of the main report? This is where it needs to be as far as the printed report goes - it is duplexed.
    Regards
    Lanny

Maybe you are looking for

  • How to get the Survey result with a External Provider

    Hi all We have an scenario where we create a Survey and it's executed for a third party, and then they send to us the results for example in a excel sheet. Some know how we can upload the survey results per each client into CRM, Best Regards.

  • USB-Hub not working on LEFT USB port?

    Hello, I have installed Windows 7 Ultimate 64 Bit on my MacBook Pro 13" Retina (Early 2013) and it's running fine. Boot Camp version: 5.0.5033. But I have one problem: I bought an external monitor (Dell U2414H) which has an built-in 4-Port USB 3.0 hu

  • PO history category

    Hi Consultant, I would like to know the difference between DPyt and AnzV. Actually our user perform the down payment clearing by using the same method for two downpayment document posted for the same PO, but the clearing document appear under differe

  • Difference in font rendering of JList and other text components

    Hi, I have a swing application using JTextField,JTextArea and JList.When I use a font for an Indian Language for these components,the JList shows the data correctly but the other components shows it with junk characters.Is there a difference in the f

  • Installing JS App Server 8.2 platform on Sol10: Warning on java2 SDK

    I am running Solaris 10 (03/05) on a sparc Ultra10 workstation. Downloaded and installed Sun Java System Application Server 8.2 platform edition yesterday, using the installation wizard from a .bin file (nicer than pkgadd!). It installed successfully