Java threads consume CPU in sleep state (??)

Hi,
I'm using the PRSTAT command on Solaris for the first time.
I am investigating high CPU usage problem in my application. So to monitor the CPU usage I used the prstat and mpstat command. My machine is a 2-CPU box.
The prstat -L -p <pid> command output is as follows:
PID     UNAME  ... ....  STATE           CPU      PROCESS / LWPID
2962   bea                   run           7.6%           java / 5
2962   bea                   run           5.6%           java / 38
2962   bea                   run           5.6%           java / 22
2962   bea                   sleep         5.5%           java / 21
2962   bea                   sleep         5.4%           java / 36
2962   bea                   cpu2          5.2%           java / 23
2962   bea                   sleep         5.1%           java / 29
2962   bea                   run           5.1%           java / 37
2962   bea                   sleep         4.9%           java / 34
2962   bea                   run           4.9%           java / 15
2962   bea                   run           1.1%           java / 12
2962   bea                   sleep         1.0%          java / 33
2962   bea                   run           0.6%           java / 14
2962   bea                   run           0.0%           java / 17
..... This shows that of all the threads in my app only one thread(23) is currently on the CPU and is using 5.2% of CPU. But why are the threads in sleep and runnable state consuming CPU?
Also the mpstat output shows high CPU usage:
CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
  0   8   0  366  428   61   994   387  40   70     0 10941  95   4    0    1
  2   3   0  370  1003  563 1362  648   42   61    0  5374    92   2   0    6If my application is taking only ~57% according to sum of values from prstat, why is my mpstat showing 95% and 92% usage on EACH of my CPUs...??
I'm unable to interpret the result.
Any help would be really useful to me at this moment.
.

Hi,
Your question should be posted in a unix forum instead of a java forum. The question, and the answer is not related to java.
The reason that prstat shows processes in sleaping state is that it doesn't create a snaphost at one point in time. It does instead show an average over some time (don't know the period), so the process has been running and consumed cpu, or is generally running, but currently sleeping.
Kaj

Similar Messages

  • Java thread with high CPU usage

    Hi,
    Running prstat -L -p pid on Solaris produces a list of lwp threads running in that process that are consuming the most CPU. Out of about 7 threads that were associated with kernel threads in pstack output, only 5 of them were mapped to a JVM thread dump. How is it possible to have a Java thread consuming CPU that doesn't show up in a thread dump?
    Thanks,
    J.S.

    And, any idea what this thread is doing?
    Here's pstack output for this missing thread 12:
    ----------------- lwp# 18 / thread# 12 --------------------
    fe0e48b4 __1cHCompileSflatten_alias_type6kMpknHTypePtr__3_ (b6001780, 100360, fe4c8000, b6001780, 100360, 0) + 4d8
    fe0f42ac __1cHCompilePget_alias_index6kMpknHTypePtr__I_ (b6001780, 100360, b6001264, 7e2bb8, 41f4, 7e2bb8) + 8
    fe11131c __1cJStoreNodeFIdeal6MpnIPhaseGVN_pnLPhaseDefUse__pnENode__ (0, 7dd5b4, 5035ec, 7e2bb8, b6001144, b6001264) + 128
    fe0c1224 __1cMPhaseIterGVNNtransform_old6MpnENode__2_ (0, b6001144, 7e2bb8, b6001264, 7e2bb8, b600116c) + 47c
    fe17349c __1cMPhaseIterGVNIoptimize6M_v_ (24, 0, a37700, b6001110, b6001100, 3442f0) + b4
    fe1943b0 __1cOPhaseIdealLoop2t6MrnMPhaseIterGVN_pk0_v_ (b6000ee8, a3772c, 1, 4ff37c, 2000, 269568) + 7cc
    fe1cc89c __1cHCompileIOptimize6M_v_ (b6001780, b60015b8, b6001780, b60015dc, 0, b60013dc) + a0
    fe1cb69c __1cHCompile2t6MpnFciEnv_pnHciScope_pnIciMethod_ill_v_ (91f504, b6001800, db8a24, fe5296b4, b60018a0, b60018b0) + 7bc
    fe1c73f8 __1cKC2CompilerOcompile_method6MpnFciEnv_pnHciScope_pnIciMethod_il_v_ (27b18, b6001af8, db8a24, db8938, ffffffff, 1) + 70
    fe1c79fc __1cNCompileBrokerZinvoke_compiler_on_method6FpnLCompileTask__v_ (db8938, db8a24, fe4eacec, 0, 0, 8d9) + 40c
    fe280964 __1cNCompileBrokerUcompiler_thread_loop6F_v_ (28758, 13a570, fe4c8000, b6001d10, fe4c8000, ffffffff) + 168
    fe216200 __1cKJavaThreadDrun6M_v_ (b5e02000, fe4d3e34, fe4c8000, 1ffd70, 13a570, 1ffd70) + 3d8
    fe213ec8 _start   (fe4c8000, ff325d10, 0, 5, 1, fe401000) + 20
    ff36b734 threadstart (13a570, 0, 0, 0, 0, 0) + 40

  • Java Thread.sleep() on Windows 8 stops in S3 sleep status

    There's a desktop application that uses Thread.sleep() to achieve long (minutes or hours) delays. This same application has been working fine from Windows XP through Windows 7. The application calculates how far in the future it needs to do something, then hits a Thread.sleep(msToWait). This has been working fine, even if the system happens to go into S3 or S4 sleep state during the wait.  All is good as long as the machine is awake at the time when the sleep expires.
    As of Windows  8 (and 10), though, the code after Thread.sleep() does not execute "on time" if the machine has been in S3 during the sleep interval. It appears that the machine begins executing code at "msToWait" plus the time the machine has been in S3.
    Earlier versions of Windows did not exhibit this behavior; code after Thread.sleep() waited the right amount of time, irrespective of sleep status.
    A test program and procedure were developed. The procedure is to 1) run the program, 2) cause the machine to sleep for about a minute, then 3) wake the machine and wait for the program to finish.
    If this the program is run on Windows 10 (reporting as 8) with JVM Version: 25.40-b25, it fails (the 63589 corresponds to the minute that the machine was in S3):
    C:\Users\Tester\Downloads>SleepTester.exe
    Wed Apr 01 10:47:35 PDT 2015 Using default number of minutes: 5
    Wed Apr 01 10:47:35 PDT 2015 You can use "SleepTester -minutes 10" to have it sleep for 10 minutes, for example.
    Wed Apr 01 10:47:35 PDT 2015 JVM Version: 25.40-b25 Windows Version: Windows 8
    Wed Apr 01 10:47:35 PDT 2015 The program will now wait for 5 minutes.  Expect wrap-up at Wed Apr 01 10:52:35 PDT 2015
    Wed Apr 01 10:53:38 PDT 2015 The system has come through the Thread.sleep(300000).
    Wed Apr 01 10:53:38 PDT 2015 This should be a low number: 63589
    Wed Apr 01 10:53:38 PDT 2015 This appears to be operating incorrectly...the expected sleep time has NOT been achieved.
    Wed Apr 01 10:53:38 PDT 2015 Program is ending.
    If the process is run on Windows 7, it does not fail:
    Wed Apr 01 17:12:18 EDT 2015 Java Runtime Version: 1.8.0_31-b13 JVM Version: 25.31-b07 Windows Version: Windows 7
    Wed Apr 01 17:12:18 EDT 2015 The program will now wait for 6 minutes.  Expect wrap-up at Wed Apr 01 17:18:18 EDT 2015
    Wed Apr 01 17:18:18 EDT 2015 The system has come through the Thread.sleep(360000).
    Wed Apr 01 17:18:18 EDT 2015 This should be a low number: 0
    Wed Apr 01 17:18:18 EDT 2015 Program is ending.
    This is the guts of  test program:
    [code]
    public static void main(String[] args) throws Exception {
       System.out.println(new Date() + " Java Runtime Version: " + System.getProperty("java.runtime.version") + " JVM Version: " + System.getProperty("java.vm.version") + " Windows Version: " + System.getProperty("os.name"));
       long msDelay = mMinutes * 60 * 1000;
       long wakePoint = new Date().getTime() + msDelay;
       System.out.println(new Date() + " The program will now wait for " + mMinutes + " minutes. Expect wrap-up at " + new Date(wakePoint));
       Thread.sleep(msDelay); // If the machine goes into S3 during this interval, it should not matter, as long as it's awake when it fires.
       System.out.println(new Date() + " The system has come through the Thread.sleep(" + msDelay + "). ");
       long msAccuracy = Math.abs(new Date().getTime() - wakePoint);
       System.out.println(new Date() + " This should be a low number: " + msAccuracy);
       if (msAccuracy > 1000) System.out.println(new Date() + " This appears to be operating incorrectly...the expected sleep time has NOT been achieved.");
       System.out.println(new Date() + " Program is ending.");
    [/code]
    Was the change in behavior from earlier versions of Windows intentional?  Is it something that the JVM is controlling, or is there a difference in the underlying OS that is beyond the control of the JVM?

    I might need to create a work-around whereby I maintain a watch of the msDelay and the system clock.  If there is a discontinuity (which would only happen on Windows 8 or higher), then I would repair the msDelay value.
    A separate (but related) question:
    Can I conclude that since older JVM's running on Windows 8 still have the problem, that it's a Windows issue, and not a JVM issue?

  • Java thread sleeps forever

    i am using the following code the problem i am facing is that the thread does not return from sleep only in one condition.can any one guide me regarding this.
    can i know in what condition the java thread does not return after sleep.
    while(ivIsActive)
    // call some functions
    try
    Thread.currentThread().sleep(ivSleepTime * 1000);
    catch (InterruptedException iException)
    { //............     }

    wait (even with a timeout) and sleep really have
    rather different functions and I'd be disinclined to
    use wait where sleep was appropriate.If you ever what a sleep() to finish early use a wait().
    If you try to interrupt a sleep there is no guarentee that this will not interrrupt in an unexpected place. With wiat you can be sure only thread waiting on a given object will receive the notify.
    I almost never use sleep in preference for wait for this reason.
    I consider it unwise to place much dependence on a notify not occuring, A notify should occur when you execute it. If you don't call notify, it doesn't.
    you might use wait/notify on the object in question for some unrelated purpose
    in different threads, forgetting this sleep. The notify should signify that a change has occured. The code should then test what has changed and what it should do about it. If you use this approach there is little impact in using the same notify for different purposes. If this is of real concern and you can use a dedicated object for notifying a change in the isAlive state (and make it private)
    (I invariably use while tests before wait, rather than if tests).Could you clarify this point?
    I think wait(time) should be regarded as a semaphore wait with timeout.I agreee. An if you want a Thread.run() loop to exit in a timely fashion then wait() is the thing to use. If you it is a requirement that the loop exit after the 30 second, then use sleep();
    Anyway, as to the original problem I think you need
    to make 500% sure that ivSleepTIme is what you think
    it is (because I'd be extremely surprised if it is).
    This is probably a good place for an assertion.I would also check that isAlive is really changing. It is not uncommon to be changing the isAlive in another context, or another object, or not at all.

  • Under CentOS 6 x64, Java Thread.sleep()/Object.wait() will be influenced.

    Under CentOS 6 x64, Java Thread.sleep()/Object.wait() will be influenced while changing OS time.
    I found a BUG in java bug list. The bug id is 6311057 with fixed status. But I find it still existing.
    Under CentOS6 x64 platform, on JDK1.6.0_33, the bug still exists.
    But under CentOS5 x64 platform, on same JDK, the problem does not exist.
    Could anyone give me help? Thanks.
    The bug's link is http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6311057
    Edited by: user10222290 on 2012-6-13 下午9:22

    user10222290 wrote:
    One server could want to synchronize it's OS time with another server when they connected each other for some business reasons. I have 3 computers running pretty much continuously with time synchronised from one of the internet time servers. They never seem to be more than about 1/10 th second apart and any time corrections are very very small.
    Some threads have started to run before changing OS time, so these thread's sleep process will be influenced sometime seriously.I understand that but I would only expect this to be a problem when there is a significant change to the OS time. If each server is synchronized to a time server then the time corrections will be very very small.
    If OS time was turned back some days, these thread could not wake up untill some days passed.Agreed but why would the "OS time be turned back some days" ?
    This whole problem seems to me to arise because the servers are not time synchronized. Now I understand that there may be concerns about the security of external time servers but it is easy enough to make one of the local servers a master and act as a time server to the others.
    I have a small server that typically services some 30 or so external clients. I don't have any control over the clients and do not know anything about the setting of their system clocks. The clients send a time signal as part of a heartbeat and from this the server keeps track of the local time on each client and compensates for any difference when writing logs. I have seen this difference as big as 4 months but the compensation corrects it to within about a second. No adjustment of clocks is required for this.
    I still don't see this 'bug' as a serious bug. I just see a design problem to be solved without changing the OS time on any computer. I know this can be done since I do it. The only problem I see is if you want an accuracy of better than about 20 mS but that does not seem to be required for your system.
    Note - if Oracle accept your new bug report it could take years to fix even if lots of people vote for it to be fixed.

  • Java Thread.sleep(timeout) is influenced by changes to System time on Linux

    Java Thread.sleep(timeout) is influenced by changes to System time on Linux
    bugId : 6311057
    I encountered this problem in redhat6/ jdk 1.6

    890651 wrote:
    Java Thread.sleep(timeout) is influenced by changes to System time on Linux
    bugId : 6311057
    I encountered this problem in redhat6/ jdk 1.6At least half the time I use it, I'd want it to be, the other half I wouldn't care.
    What are you doing with it where this might be a problem?
    Changing the system clock abruptly can cause all kinds of problems with your system anyway, because various background activities etc. often depend on file dates. Wherever possible use the "skew" method to adjust your system clock, rather than just plonking in a new value, especially if you are setting the clock backwards.

  • How to assigne Java thread to a specific cpu core

    Hello everyone,
    I want to ask a complicated question. How can I assign Java threads to specific core in a multi-threaded application. The underlyinsg OS can be Linux or Windows. Is there any option provided in JVM can do it?
    If I want to fork a process using C, how can I mix the Java and C together.
    I am looking forward your suggestions.
    Thank you.

    yang2007 wrote:
    Can I fork several Java processes using C and letting each Java process run on a core? These would be questions for a C forum, or one for the OS on which you wish to run this.
    The benefit may be to reduce the interference.You're assuming that you are smarter at thread scheduling than the algorithms written, tested, and honed over decades by people whose job is specifically that.

  • Java process - high CPU usage

    Hi,
    I'm describing a high CPU scenario which gets triggered randomly ( I'm not able to replicate it on my lab setup).
    There are around 120 threads which are running in my java process. The jvm is running on a high traffic (through put) site, where there are a lot of async events coming to the java process.( around 220 events per 60 seconds ). The java process works fine in this scenario, the normal CPU consumption hovers around 1.5 % to 2.0 %.
    But, at times, I've seen CPU to be as high as 43 %, and it stays at that value for hours altogther. In those situations, I usually do a failover to standby java process. I tried debugging the issue to see which java thread could be causing the issue, but, I could not come to a conclusion or replicate the situation in lab environment.
    Here are the details of the execution environment
    java -version
    java version "1.4.2_11"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_11-b06)
    Java HotSpot(TM) Client VM (build 1.4.2_11-b06, mixed mode)
    prstat during high CPU
    PID USERNAME THR PRI NICE SIZE RES STATE TIME CPU COMMAND
    10485 root 120 10 0 570M 381M cpu1 268:10 43.64% java
    prstat -Lm -p output
    PID USERNAME USR SYS TRP TFL DFL LCK SLP LAT VCX ICX SCL SIG PROCESS/LWPID
    10485 root 53 0.5 0.2 0.0 0.0 30 0.2 16 69 1K 118 0 java/2
    10485 root 31 0.0 0.1 0.0 0.0 53 0.2 16 23 778 93 0 java/26
    10485 root 0.4 0.0 0.0 0.0 0.0 99 0.0 0.1 10 16 106 0 java/12
    10485 root 0.1 0.0 0.0 0.0 0.0 100 0.0 0.0 3 2 7 0 java/15
    10485 root 0.1 0.0 0.0 0.0 0.0 97 0.0 2.4 120 3 128 0 java/41
    10485 root 0.1 0.0 0.0 0.0 0.0 97 0.0 2.5 120 4 131 0 java/410
    Some more points about the last prstat -Lm output.
    java/2 is "VM Thread" ( responsible for GC). "VM Thread" is having a NORMAL priority ( 5 )
    java/26 is a "Worker" thread, with priority MINIMUM ( 1 ).
    Could you suggest what could be issue, and what other information I could collect to find out the issue. Its difficult to profile the process because the problem scenario is difficult to ascertain and the process is running on a production setup.
    Any help is appreciated.
    Thanks
    Sanjay

    Hi,
    Thanks for your response. Both, the production setup and lab setup have have 2 physical CPUs.
    Actually, there are two java threads ( machine is solaris 10) one is "VM Thread" and other is my applications worker thread. (there are 10 of them with priority 1). If you look at the top two lwps in the prstat -Lm , both are showing high value of ICX.
    I'm still not able to drill down to my code level. (Worker thread is waiting on a queue to de-queue server request). Could you give some hint to move foward?
    rgds
    Sanjay

  • Calculate elapse time of a Java thread  before execution

    Hi,
    I would like to enquire how can I calculate the elapse time of a Java thread BEFORE this thread is executiing or running.?
    I wish to estimate the elapsed time of each Java thread before execution to better schedule these threads to run on multiple processors for load balancing testing.
    Please help
    -meileng-[                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

    You can grab the system time in the initiating thread immediately before calling start(), and as the first step in run() in the new thread.
    However, this measurement is utterly meaningless, as it can vary between architectures or even between consecutive runs on the same box. Furthermore, even once a thread starts, it may do nothing more than that one grab-the-system-time instruction before it get swapped out for a theoretically unbounded amount of time.
    By definition, if you spawn multiple threads in Java, you don't know or care which one get CPU time when, except as you control by syncing, sleep, wait, notify, notifyAll, and whatever control priorities give you. Additionally, you don't know when the OS will give your VM cycles, and on multi-CPU machines, you don't know how many CPUs it will get when it does get cycles.

  • Preemption of Java thread (WARNING: Experts only)

    Hi java experts,
    I am thinking about a task scheduler. I would like to create my task scheduler a little bit like a CPU scheduler in such a way that it can support many scheduling algorithms.
    So my task scheduler could be a pool of thread that keep one or many queue(s) of tasks. It seem reasonnable that Task objects implements Runnable but it's not necessary; instead, a Task could be like an event and the TaskScheduler could dispatch a thread to an EventHandler implementing Runnable that will process the task.
    Some scheduling algorithms are easy to implements, like FCFS (First-Come, First-Served). But, others seem very hard to implements because algorithms use preemtion for time-sharing, like RR (Round-Robin).
    Thus, is-it possible to preempt a java thread or simulate this behavior?
    -Jean

    Whatever scheduling algorithm you use
    will depend on the underlying OS scheduling algorithm
    and the restrictions imposed by Java's WORA nature.The JVM schedules threads using a preemptive, priority-based scheduling algorithm. So, if a thread with a higher priority than the thread currently running enters the Runnable state, the JVM preempts the currently running thread and executes the thread with the higher priority. With this in mind, I think that it could be possible to create a TaskScheluer with a preemtive behaviour, maybe by modifying dynamically the threads priority...

  • Best option for Asynchronous method invocation? JMS or Pure Java Thread

    Hi,
    We've a swing based Client application which is supposed to run with a server in J2EE environment. Some process like Search etc are very time consuming. So we are going for asynchronous process.
    Now the question is to find a best option for this. Two possible candidates are
    1. JMS
    2. Java Thread.
    Can anybody suggest me which one is the best option in this context?

    Actually my thought was the issues with code maintainability.Maintainability is different issue, it is much related to OOAD and design pattern you might want to choose to avoid coupling (thus high reusability and maintainability - eg: for future enhancement, etc)..
    public interface SearchService {
         public static class DefaultFactory {
                 public SearchService getInstance() {
                          return HttpSearchService.getInstance();
         public void search (String[] keywords, Observer obs);
    public class HttpSearchService implements SearchService {
         public static HttpSearchService getInstance() {
                ... bla bla bla singleton ...
         public void search(final String [] keywords, final Observer obs) {
                     (new Thread() {
                              public void run() {
                                    .. do http request ...
                                    List result =  ... parse http response ...
                                    obs.update(list);
                     }).start();
    SearchService ss = SearchService.DefaultFactory.getInstance();
    ss.search( new String[] { "get", "me", "my" , "dukes" }, myTableModel );
    ...You can, in future, replace the default factory HttpSearchService with something faster, more appropriate SearchService, without changing many codes.
    rgds,
    Alex

  • Multiple java threads in a JVM created by the invocation interface

    Hi,
    I have a certain application APP that calls functions of a C library. One of these functions creates a JVM through the invocation interface. In the JVM I create some other threads and a Swing GUI. From the java "main" thread as well as the other threads (including the Swing event dispatcher thread) I need to call dll functions through native java methods. The latter indirectly (through another dll) invoke functions of an API of application APP.
    I have problems when making calls from the java threads to the java native library. In some cases everything works well i.e., I'm able to make calls to the java native library from both the "main" java thread and the other threads. In other cases a crash occurs when attempting to access the native library from any threads but the "main" thread.
    Can anyone help me on this? Is there any requirement that only the main java thread makes callbacks to C code?
    Thanks.

    > why later sets of java application is taking longer?
    Probably because of CPU usage.  But could be memory.
    >Can I do something here so that later sets of apps also completes in 3 mins
    You tune the task, the complete task, to the box.  That means you must understand in detail what is taking time and then architect that to make the best use of the available CPUs and memory (and other resources as used by the task.)

  • AJAX producer/consumer and JAVA producer/consumer  in same project

    I've already successfully integrated and customized the code for both an AJAX and JAVA producer/consumer client in JMS (using ActiveMQ as the JMS broker and Tomcat as the webapp container). While both have been working well in separate projects, unfortunately, I'm having a bit of trouble trying to integrate them for the purpose of running an AJAX message listener and JAVA message listener in the same project.
    What I'm trying to do is have JAVA act as the failover for when the AJAX JMS consumer is not listening (i.e. when the browser is closed). When a browser client opens, the (constantly running) JAVA client can ignore the messages... but... when no browser client is initialized, the JAVA client should respond to the messages on behalf of the AJAX client.
    I've tried using a ServletContextListener pattern, which I was hoping would "automagically" launch the JAVA listener via its main method, whenever the Servlet gets initialized (i.e. it would auto-start when Tomcat gets restarted, or, anytime the Servlet gets redeployed) but it seems Tomcat is not thread-safe and this might be causing some problems.
    In any case, I can't seem to get the JAVA client to reliably start running and stay running for the lifetime of my AJAX client (webapp .war), and without including them in the same project and same J2EE container sharing the same ServletContext, I don't know how its possible to ensure they are running and starting and stopping at the same time.
    Is there perhaps a better way to accomplish this?
    Edited by: bcmoney on May 17, 2010 1:25 PM

    I've already successfully integrated and customized the code for both an AJAX and JAVA producer/consumer client in JMS (using ActiveMQ as the JMS broker and Tomcat as the webapp container). While both have been working well in separate projects, unfortunately, I'm having a bit of trouble trying to integrate them for the purpose of running an AJAX message listener and JAVA message listener in the same project.
    What I'm trying to do is have JAVA act as the failover for when the AJAX JMS consumer is not listening (i.e. when the browser is closed). When a browser client opens, the (constantly running) JAVA client can ignore the messages... but... when no browser client is initialized, the JAVA client should respond to the messages on behalf of the AJAX client.
    I've tried using a ServletContextListener pattern, which I was hoping would "automagically" launch the JAVA listener via its main method, whenever the Servlet gets initialized (i.e. it would auto-start when Tomcat gets restarted, or, anytime the Servlet gets redeployed) but it seems Tomcat is not thread-safe and this might be causing some problems.
    In any case, I can't seem to get the JAVA client to reliably start running and stay running for the lifetime of my AJAX client (webapp .war), and without including them in the same project and same J2EE container sharing the same ServletContext, I don't know how its possible to ensure they are running and starting and stopping at the same time.
    Is there perhaps a better way to accomplish this?
    Edited by: bcmoney on May 17, 2010 1:25 PM

  • How can I get the memory allocation info of a java thread?

    Now I am going to write a program to monitor the execution condition of the java threads. But it seems that the classes in standard edition of JDK does not provide facilities to get the information such as the memory allocation and CPU time of a running thread. How can I do with it? Can I use JNI or JVMDI to get them? If it could do, how?

    Thanks a lot. I just browsed the specification of jvmpi. It is interesting and it seems that I can get the information I need. However, if I want to get the information in my program, I mean, if I want to build a class which may use JNI method to invoke the function written with JVMPI, and then forward the data to other upper layer objects, can it be done?

  • Use java thread? or Oracle DB scheduler?

    I have a java thread which purge records in a table every 30 seconds. The thread calls a prepared statement which is like "delete from MyTable where status=99"
    can I use DB's scheduled job to do the same thing? I can create a DB schedule, and a job in plsql.
    Thus I can save on DB connections.
    Which one is better in terms of performance?

    SoulTech2012 wrote:
    i personally recommend against PL/SQL if you can manage it
    some will argue that it's okay to couple yourself to a database because you're likely not to change it
    but i've seen enough migrations to know the painConversely I have seen attempts to process data by dragging it across the network in the vain attempt to make the application database agnostic. Which results in orders of magnitude more processing time when the application needs to do anything approaching real volume.

Maybe you are looking for

  • Creative Cloud Subscription - Application & AAM Updates - What's manual & What's not?

    This may seem a silly question, but I'm finding updating apps more complex now that I have Creative Cloud membership -- or at least it seems more complex. Questions The question is, what updates come through AAM and what updates must I go to adobe.co

  • Internet explorer 8 crashing often

    Internet Explorer 8 is crashing often and then, I get the message below. I uninstalled Flash player and reinstalled it but this problem came back. Can you help? I have Windows Vista Home. Troubleshoot a problem with Adobe Flash Player Adobe Flash Pla

  • Suplier evaluation to be send via Information Broadcast

    Hi BI Experts, I would realy apreciate you can tell me the steps (configuration/functional) to be able to send a supplier evaluation wich was generated in SRM and uploaded into BI. I need to send this evaluation to an external supplier. thanks in adv

  • Process Instances do not appear in BPEl console

    HI everybody I have a Asyn BPEL worflow which consists of a receive business event lisening to a change in database which in turn initiates a BPEL flow.The problem i am facing is that when i do make a change in database everything works fine but i am

  • Lenovo T61p Cannot logon

    I have a Lenovo T61p running Vista Ultimate which I purchased in May of 2008.  Last Friday, I attempted to upgrade my anti-virus package (Spyware Doctor) and somehow damage my system.  The laptop hangs just  before displaying the login screen...stuck