Matching Java thread IDs to Linux PIDs

I have a rather complex java application running, which has on the order of 30 threads. While running some tests, I discovered (using top) that one of the java child processes was spinning. I know the offending process ID, how can I match this to a java thread id which I can obtain from a thread dump? There is an "nid" field in the dump which almost, but doesn't quite, match up with a Linux process. I am using Java 1.4.1_01 for Linux. Thanks!

Well... this sorta works, but not really. I tried you code and added a bit more. First off, there are PIDs generated which don't seem to run for very long. Here is the java output:
OUTPUT: PID
OUTPUT: 18530
OUTPUT: 19389
OUTPUT: 19400
And here is a ps listing (truncated):
|-bash(18530)---java(19389)---java(19390)-+-java(19391)
|-java(19392)
|-java(19393)
|-java(19394)
|-java(19395)
|-java(19396)
|-java(19397)
`-java(19405)
PID 19400 isn't even listed. Also, I spawned some more threads and these never got recognized correctly either. PIDs taken from the "ps" the moment after the threads are created do not stay around; pstree done some time later shows the threads are not running.
Besides, how is this supposed to be used in a production system to map PIDs to TIDs? Do a "ps -Topid" every time a new Thread is created anywhere in the system? Yuck! It looks like Sun really needs to provide this support in the threaddump.
Thanks anyway.

Similar Messages

  • Can't get Thread IDs to display in server.log or syslog

    I'm trying to capture the Java thread IDs for a custom application. According to the SunOne documentation, the thread IDs are only available if you configure the app to use the syslog for logging... even then, the thread IDs are optional.
    I've configured the app server to log through the syslogd and turned up the logging to finest. Still no thread IDs output to the log. Any suggestions?

    I've read that page - several times. I still can't it to work. Part of the problem that page is that it's talking about adding an existing WIT to the backlog, instead of a custom WIT.
    I inherited a customized template and I'm trying to further customize it, which is probably adding to my struggle. Can you spot anything wrong or missing here?
    From categories.xml:
    <CATEGORY name="Team Backlog Item Category" refname="MyCompany.TeamBacklogItemCategory">
    <DEFAULTWORKITEMTYPE name="User Story" />
    <WORKITEMTYPE name="Spike" />
    <WORKITEMTYPE name="Bug" />
    <WORKITEMTYPE name="Technical Story" />
    <WORKITEMTYPE name="Report" />
    </CATEGORY>
    From process Settings:
    <RequirementBacklog category="MyCompany.TeamBacklogItemCategory" pluralName="Team Backlog Items" singularName="Team Backlog Item">
    <States>
    <State value="New" type="Proposed" />
    <State value="Approved" type="Proposed" />
    <State value="Committed" type="InProgress" />
    <State value="Done" type="Complete" />
    </States>
    <Columns>
    <Column refname="System.WorkItemType" width="100" />
    <Column refname="System.Title" width="300" />
    <Column refname="System.State" width="100" />
    <Column refname="Microsoft.VSTS.Common.Priority" width="50" />
    <Column refname="Microsoft.VSTS.Scheduling.Effort" width="50" />
    <Column refname="System.IterationPath" width="200" />
    <Column refname="System.Tags" width="200" />
    </Columns>
    <AddPanel>
    <Fields>
    <Field refname="System.Title" />
    </Fields>
    </AddPanel>
    </RequirementBacklog>
    Also, do I have to do anything special to get the web portal to "refresh" after making changes like this?
    Thank you. 

  • 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.

  • Maximum simultaneous opened files in a java thread on linux 1.4.20

    Hello,
    It seems like a maximum of 1024 files can be opened by a processus on linux (in java, a thread is a linux processus).
    Is it possible to change this value, or has it been set at the JVM compilation?
    I created a nio server, and one thread is to manage thousands of connections. For the moment I can't pass 1010 connections.
    As a fast test, I created the following source :
    public class MaxOpenedFilesTest {
    /** Creates a new instance of MaxOpenedFilesTest */
    public MaxOpenedFilesTest() {
    * @param args the command line arguments
    public static void main(String[] args) {
    File f = new File("/home/greg/a.out");
    FileInputStream[] stream = new FileInputStream[2000];
    try {
    for (int i=0; i<stream.length; i++) {
    stream[i] = new FileInputStream(f);
    System.out.println(i+" files opened");
    catch (Exception e) {
    System.out.println("ERROR : "+e);
    e.printStackTrace();
    This test throws an IOException at 1019 files opened : Too many opened files...
    I have tested a lot of things. I even recompiled the linux kernel. Changed the NR_OPEN, OPEN_MAX, __FD_SETSIZE, etc... Still don't work.
    I havve set the global maximum file descriptor to 65536. It works. But for one thread, I can't have more than 1019 file descriptors (must be the 1024 initial limit defined by the kernel)...
    Could somebody help.
    It would be great.
    Thank you.
    Gr�goire.

    Thank you for your answer.
    I have already done all the described procedures in the link you provided.
    In fact, I used this link :
    file:///home/greg/1_NetNoLedge/LinuxTuning/linux.html
    and this other one :
    file:///home/greg/1_NetNoLedge/LinuxTuning/s1-custom-kernel-modularized.html
    Still only 1024 files allowed to be opened for one process...
    In your link, it is said :
    You need to give processes the option of increasing their file descriptor limits:
    In /etc/security/limits.conf add two lines:
    * soft nofile 1024
    * hard nofile 4096
    Suggesting that it wouldn't even be necessary recompile the kernel to allow more opened file descriptors in a process... This really isn't clear for me.
    Thank you.

  • Java Logger incrementing thread ids for a thread spawnned via JNI

    Hi all,
    I have a Java Logger object that I am passing to a JNI dll written in C++.
    If I spawn a thread from the JNI dll and log from that thread, the thread id in the log file increments for each log entry.
    To test this I wrote an infinite loop on the thread to make sure that the logging originated from a single thread. The thread id keeps incrementing in the log and the memory usage of the process increases too. However, the thread count in Task Manager does not increase.
    I will let the process run overnight to determine if the thread id will overflow or if an out of memory exception occurs.
    Has anyone else seen this behavior? Does anyone know what I might be doing wrong? I'm using jre 1.5.1.
    Thanks,
    William

    (1)
    has anybody ever tried to use a native library from
    JNI, when the library (Windows DLL) is not thread safe?
    Now we want many Java clients.
    That would mean each client makes its calls
    to the library in its own thread. Because the library
    is not thread safe, this would cause problems.Right. And therefore you have to encapsulate the DLL behind a properly synchronized interface class.
    Now the details of how you have to do that depends: (a) does the DLL contain state information other than TLS? (b) do you know which methods are not thread-safe?
    Depending on (a), (b) two extremes are both possible:
    One extreme would be to get an instance of the interface to the DLL from a factory method you'll have to write, where the factory method will block until it can give you "the DLL". Every client thread would obtain "the DLL", then use it, then release it. That would make the whole thing a "client-driven" "dedicated" server. If a client forgets to release the DLL, everybody else is going to be locked out. :-(
    The other extreme would be just to mirror the DLL methods, and mark the relevant ones as synchronized. That should be doable if (a) is false, and (b) is true.
    (2)
    Now we discussed to load the library several times -
    separately for each client (for each thread).
    Is this possible at all? How can we do that?
    And do you think we can solve the problem in this
    way?The DLL is going to be mapped into the process address space on first usage. More Java threads just means adding more references to the same DLL instance.
    That would not result in thread-safe behavior.

  • 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.lang.Exception: Couldn't find a matching Java operation for WSDD

    Hi all,
    i used Eclipse to create a web service. actually i created a class with the following code:public class Add2Num {
         public int Add2Numbers(int x,int y)
              return x+y;
    }then i tried to generate wsdl file for this class, after i generate the wsdl file, i tried to run it but the following exception appear:
    org.apache.axis.InternalException <init>
    SEVERE: Exception:
    java.lang.Exception: Couldn't find a matching Java operation for WSDD operation "add2Numbers" (2 args)
         at org.apache.axis.InternalException.<init>(InternalException.java:71)
         at org.apache.axis.description.JavaServiceDesc.loadServiceDescByIntrospection(JavaServiceDesc.java:891)
         at org.apache.axis.providers.java.JavaProvider.initServiceDesc(JavaProvider.java:477)
         at org.apache.axis.handlers.soap.SOAPService.getInitializedServiceDesc(SOAPService.java:285)
         at org.apache.axis.deployment.wsdd.WSDDService.makeNewInstance(WSDDService.java:500)
         at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getNewInstance(WSDDDeployableItem.java:274)
         at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getInstance(WSDDDeployableItem.java:260)
         at org.apache.axis.deployment.wsdd.WSDDDeployment.getService(WSDDDeployment.java:427)
         at org.apache.axis.configuration.FileProvider.getService(FileProvider.java:231)
         at org.apache.axis.AxisEngine.getService(AxisEngine.java:311)
         at org.apache.axis.MessageContext.setTargetService(MessageContext.java:755)
         at org.apache.axis.handlers.http.URLMapper.invoke(URLMapper.java:50)
         at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
         at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
         at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
         at org.apache.axis.server.AxisServer.invoke(AxisServer.java:239)
         at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
         at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
         at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
         at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
         at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
         at java.lang.Thread.run(Thread.java:595)

    The cause is case mismatch.
         Your method signature : public int Add2Numbers(int x,int y) --- Upper Case
    But the signature produced is
    ouldn't find a matching Java operation for WSDD operation "add2Numbers" (2 args)
    ( from the error trace ) -- Lower case.
         Change the case of your method to add2number (lowercase ) as per conventions and you code will work.
    Rgdz,
    Saroj Kumar

  • Error in the latest Java comm api for Linux

    installed latest Java comm api for Linux, tried test application for the Sun package:
    $ java SimpleRead
    Exception in thread "main" java.lang.ExceptionInInitializerError
    at SimpleRead.main(SimpleRead.java:67)
    Caused by: java.lang.NullPointerException
    at javax.comm.CommPortIdentifier.findConfFile(CommPortIdentifier.java:199)
    at javax.comm.CommPortIdentifier.<clinit>(CommPortIdentifier.java:117)
    ... 1 more
    What deis this message mean? How to make you serial port support work?

    and what does this error message mean??
    The package was installed accordingly to "Java(tm) Communications API Linux Installation Instructions":
    $ls /usr/lib/libLinuxSerialParallel.so
    /usr/lib/libLinuxSerialParallel.so
    $env|grep CLASS
    CLASSPATH=<..skipped..>:/opt/commapi/jar/comm.jar:/opt/commapi/jar/commtest.jar
    $ ls /opt/jdk1.5.0_04/jre/lib/javax.comm.properties
    /opt/jdk1.5.0_04/jre/lib/javax.comm.properties
    What else does it need?

  • Question about java thread implementation

    Hi All,
    I am comparing the performance of the Dining philosopher's problem
    implemented in Java, Ada, C/Pthread, and the experimental language I
    have been working on.
    The algorithm is very simple: let a butler to restrict entry to the
    eating table, so that deadlock is prevented.
    It turns out that the java code is the winner and it is 2 times faster than C!
    The comparison result really surprised me, and raised a big
    question mark : why java runs so fast? I did not use high-level synchronization
    constructs like Semaphores, atomic variables, etc.
    I vaguely recall that Java thread is actually implemented by the underlying
    system thread library(so on linux, the default would be NPTL, on windows NT threads,
    and on Mac OSX it would be Cthread?). Can no longer remember where I read that.
    Does anyone here have some notions about the Java thread
    implementations(where is this formally explained)? or Does anyone know where
    I can possibly find relevant literature or the answer?
    thanks a lot.
    cheers,
    Tony

    Peter__Lawrey wrote:
    google has lots of information on java threaded.
    One thing java does is support biased locking. i.e. the thread which last locked an object can lock that object again faster.
    This may explain the difference. [http://www.google.co.uk/search?q=java+usebiasedlocking]
    Note: you can turn this option off and other locking options to see if a feature is giving you the performance advantage.
    Personally I have found that real world multi-threaded applications are easier to write in Java, esp. when you have a team of developers. For this reason, alot of C/C++ libraries are single threaded, even when there would be a performance advantage in being multi-threaded (because its just too hard in reality to make it thread safe and faster because of it)I didn't know that, very interesting :-)

  • Java Thread run some day then death ,use jstack check it,it  run again, is

    hi all;
    I write a java program run as linux daemon,
    command line is >nohup java myclass &>/dev/null
    it run some day ,then death, ,look like death lock ,but thread not exit
    if i use jstack checke it ,it run again!
    my env is
    Linux version 2.4.20 ,redhat linux
    jstack 14616
    Attaching to process ID 14616, please wait...
    Debugger attached successfully.
    Client compiler detected.
    JVM version is 1.5.0_02-b09
    my program like
    commandline nohuo java StartUp >/dev/null &
    public Class StartUp{
    public static void main(String[] argv){
       Connection con = getDBConnection
         Thread t1 = new Thread(new MyRun(con));
      t1.start();
         Thread t2 = new Thread(new MyRun(con));
      t2.start();
      for(;;){
      Thread.sleep(100);
    public class MyRun implements Runnable{
    Connection con;
    public MyRun(Connection c){con = c;}
    public void run(){
         for(;;){
         object = readData(con);
         process(object);
         log.info("watch info ....");
         Thread.sleep(500);
    }

    Today i found my program hang, i use kill -SIGQUIT to print thead trace
    but i can't find the bug,after send singal ,the thread run again!
    another question
    how to detect a thread is hang?and use another thread restart it?
    thread dump
    Full thread dump Java HotSpot(TM) Client VM (1.5.0_02-b09 mixed mode, sharing):
    "pool-1-thread-2" prio=1 tid=0x08447858 nid=0x5aa6 waiting on condition [0x4680f000..0x4681021c]
    at sun.misc.Unsafe.park(Native Method)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:118)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1772)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:359)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674)
    at java.lang.Thread.run(Thread.java:595)
    "pool-1-thread-1" prio=1 tid=0x08392740 nid=0x5aa5 waiting on condition [0x4678f000..0x4678ff1c]
    at sun.misc.Unsafe.park(Native Method)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:118)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1772)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:359)
    at com.ejet.mms.MmsSend.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
    at java.lang.Thread.run(Thread.java:595)
    "Low Memory Detector" daemon prio=1 tid=0x080a18b0 nid=0x5a9f runnable [0x00000000..0x00000000]
    "CompilerThread0" daemon prio=1 tid=0x080a0360 nid=0x5a9e waiting on condition [0x00000000..0x417e2c04]
    "Signal Dispatcher" daemon prio=1 tid=0x0809f478 nid=0x5a9d waiting on condition [0x00000000..0x00000000]
    "Finalizer" daemon prio=1 tid=0x080989e8 nid=0x5a9c in Object.wait() [0x413e4000..0x413e441c]
    at java.lang.Object.wait(Native Method)
    - waiting on <0x66c18420> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
    - locked <0x66c18420> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
    at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
    "Reference Handler" daemon prio=1 tid=0x08097cf8 nid=0x5a9b in Object.wait() [0x41364000..0x4136451c]
    at java.lang.Object.wait(Native Method)
    - waiting on <0x66c184a0> (a java.lang.ref.Reference$Lock)
    at java.lang.Object.wait(Object.java:474)
    at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
    - locked <0x66c184a0> (a java.lang.ref.Reference$Lock)
    "main" prio=1 tid=0x0805ae68 nid=0x5a98 waiting on condition [0xbfffc000..0xbfffc4f8]
    at java.lang.Thread.sleep(Native Method)
    at com.ejet.mms.MmsStartup.main(Unknown Source)
    "VM Thread" prio=1 tid=0x08095218 nid=0x5a9a runnable
    "VM Periodic Task Thread" prio=1 tid=0x080a2d40 nid=0x5aa0 waiting on condition

  • 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.

  • Calling pl/sql api through multiple java threads

    Hi All,
    I need to call a pl/sql api from multiple java threads simultaneously and all thread will use same db connection.
    I want to know if all the threads will simultaneously call the pl/sql api then will the local variable inside pl/sql procedure be shared between them or they will get separate instances of variables.
    TIA

    You cannot make multiple parallel client calls over the same Oracle session handle. There is a single non-threaded/non-fibre serialised server process servicing client requests for that session. (physical process on Linux/Unix, thread in the oracle.exe process on Windows).
    Each thread on the client side, needs its very own Oracle session. Thus each thread will have a server process footprint on the server. Which could be problematic if 10 clients each starts 10 threads - as it means a 100 processes on the server are needed to service these client threads.
    Have a look at Overview of OCI Multithreaded Development in the Oracle® Call Interface Programmer's Guide for how to use the threading call interface of the OCI - as oppose to rolling your own where each thread manually needs to deal with is OCI session context.

  • A.out as Java Thread?

    Hello,
    I am programming in linux and I want to incorporate a C program (compiled to a.out) as a java thread.
    Is there any lazy way to do this, or would I have to:
    1. Compile it to object code,
    2. Link the object code as a shared library,
    3. Load the library in the java program and make a <code>public native int main()</code> function?
    I will also probably be running this in linux also.
    Thanks for any help!

    Well, I guess it depends on what you call the
    operating system. You could write an entire
    operating system for a virtual machine. Some things,
    like the file system, would be backed by the existing
    file systems, but what the hell? Do it anyway.
    Another project, which might be a bit more feasible
    and have more immediate benefits, would be to write
    an entire shell in Java. Let me suggest it this way:
    Write a shell in java such that you could, on a
    Windows box, start it up, then kill Explorer (not
    MSIE, I mean the Explorer shell) and use this thing
    instead, and not feel that you're hindered from doing
    anything useful.
    This might end up intersecting with the java desktop
    project. I don't know.Actually, it may be easier to use a Linux or BSD kernel, and build a shell off of that...although you would have to learn the system calls, and the GUI wouldn't be available unless you also ported the motif widget toolkit.
    If you used something like the Java-GNOME (which ports the GTK toolkit, if I remember correctly) to write the shell from scratch.
    What you would more probably do is something similiar to how mac os x works: on top of the Mach kernel, write another OS to be run by Mach. A Java OS in bytecode that mach runs, in this case. This would, however, be slow since it would be interpreted.
    It would simply be a mach kernel running the JVM which then interprets everything else. Interesting...
    The windows NT kernel is too unstable for any practical use (in my opinion), with its multithreading method.

  • Java Threads not being released after loggin off

    Hello everyone,
    We are seeing a weird problem in our PI 7.0 box.
    Once I logout from the XI box (both ABAP and Java stck) my basis tem still sees Java threads aginst my id still open. Our system does not seem to be realeasing Java threads.
    Is this a know problem? What are the remidition steps.

    Hi,
    Are there existing HTTP sessions only?
    The following might be helpful.
    http://help.sap.com/saphelp_nw73/helpdata/en/c7/5ee440ba994fa3b187ff2f050cfe7c/content.htm
    http://wiki.sdn.sap.com/wiki/display/ERPHCM/Sessionnotendingafterlogoff
    Regards,
    Varun

  • Java threads monitoring

    I am using Java threads in my Java program, running on Windows Professional 2000. I am monitoring the threads using Windows Performance Monitor (WPM). However, even running a small Java program which creates only 2 threads, results in many (at least 10) instances of Java threads being reported by the WPM. Problem is, in WPM, there is no way to determine which threads in the WPM are the threads that I programmatically created. Any ideas on how to determine this?
    Thanks.
    Rhodie

    Hi Dmirty ,
    To handle large asynchronous message   in queues you can use  message packaging where multiple message are processed in one package . to make it applicable you have to perform these simple steps
    1. go to SXMB_ADM add one RUNTIME parameter PACKAGING and value 1
    2 GO TO transaction SXMS_BCONF set delay time 0 message count 100 messages and package size 1000 KB
    with these setting your improvement will increase .secondly also put  IN SXMB_ADM monitor category parameter QRFC_RESTART_ALLOWED TO 1
    this will automatically start your queue . Only thing you have to take care if you enable packaging them don't keep too many parallel queue i.e EO_INBOUND_PARALLEL and EO_OUTBOUND_PARALLEL should be less than 20
    Regards,
    Saurabh

Maybe you are looking for

  • How can I prevent my iPhone 5 from being hacked or cloned?

    I have had my iPhone 5 hacked! How it's been done I think is by cloning or by some how signing in to my iTunes account as another device but that wouldn't explain how they are using my cell phone network. Verizon says that my phone has connected to o

  • Measuring Point with  some factor

    Dear Gurus, we have scenario in which we have  energy meter each energy meter is created as equipment for entring their daily energy genration in kwh through measuring point but we want to multiply  daily reading by some factor like 100, 50 , 40 ,1 e

  • Installing an application in pocketPC 2003

    Hi, I developped an application for PocketPC using web sphere studio (ibm's J9 VM), i created the jar file and i tranfered it to the pocket PC, but i don't know how to launch it. can any person help me.

  • Saving a generator effect

    I have finished a generator  clip on the time line that has some special effects, colors etc.. it  was created from the customs generator. I would like to use this same generator for other clips and different projects, but I don't want to tweek the g

  • Third party email accounts

    Is there a way to limit how many emails come through to the iMac when you link an external email account.  On the iPad it limits the amount to the most recent approx. 100 emails, but on the iMac it brings over the full history.