Profiler 4.5 EAP build 602 on Mac OS 10.4/Java 1.5.0

Questions about YourKit Java Profiler
Post Reply
elliotth
Posts: 5
Joined: Sun May 15, 2005 6:21 pm

Profiler 4.5 EAP build 602 on Mac OS 10.4/Java 1.5.0

Post by elliotth »

I assume this is the right forum for EAP information.

Here are my notes:

* license dialog: "Accept" and "Decline" buttons the wrong way round for Mac OS (I hit "Decline" because it was where I was expecting "Accept" to be). Also shouldn't have mnemonics (underlined characters on the buttons).

* enter license key dialog: "OK" and "cancel" buttons the wrong way round. dialog probably shouldn't be resizable. Dialog should understand "~/Desktop/yjp-eap.license". It could use mdfind(1) ["mdfind yjp-eap.license"] --- this would even find the key in Mail's inbox, so the user wouldn't have to save it.

* the instructions on file:////Users/elliotth/Desktop/YourKit%20Java%20Profiler%204.5%20EAP%20build%20602.app/docs/help/agent.html are wrong in suggesting "To check that Java can load the profiler agent, you can invoke the following command that prints a description of agent parameters:
java -Xrunyjpagent:help", because that doesn't work for Mac OS' Java 5.0 (Apple's fault?). "java -agentlib:yjpagent" is a good enough test, because it shows YKJP startup messages before erroring out.

* you need this to fix the menu bar:

System.setProperty("apple.laf.useScreenMenuBar", "true");

or you can set the property in your Info.plist file. This is hugely annoying; muscle memory will take Mac users to the real menu bar, where they'll be surprised to find nothing, and have to hunt around for the in-window menu. (This eventually annoyed me enough that I tried it, but it seems you're not using JMenuBar?)

* text *must* be anti-aliased. it looks like i'm running this on a remote Linux box via X11!

* the orange in progress bars is a bit harsh on Mac OS.

* in general: why aren't you using the Mac LAF? I'm sure this custom LAF looks okay on Linux, but it's not as nice as Aqua, and even if it were, it would lose just by being the only application on the display that looks different.

* the "Do you really want..." dialogs should have the buttons the right way round and in the right position (not centered). Also, "Yes" and "No" aren't the done thing: you'd say "Cancel" and "Delete", for example. (Buttons have verbs on them.)

* why do you ask me if I really want to quit? It's non-obvious what I'll lose if I do.

* if "CPU Statistics" is what I'm already looking at, why isn't it ticked on the menu?

* could the auto-generated snapshot names not contain the name jps(1) uses to distinguish the application?

* likewise, "connected to local application at port 63489" isn't very informative.

* "Start sampling" gives me a profile that claims most of my time is spent in a Thread that's blocked in accept. Which I find hard to believe. I know there are threads working hard from the CPU load, and I've got a rough idea of what they're doing, and since it's interactive, I know it's not a thread blocked waiting for a network connection.

...

Ah, I see: I need to choose "By threads". (Why would I want all threads mixed together by default?) The output's still confusing, though, because pretty much everything says 100%. I really want to know what part of the run time the thread was busy. So 100% of 22000 ms blocked in accept is totally uninteresting, but 90% of 12000 ms in PMatchingBracketHighlighter.caretMoved... that tells me something.

For the network thread and the RMI threads and "process reaper" to come higher up in the profile, though, is madness.

* "Start method tracing". "May noticeably slow down application being profiled"? For me, this is unusable. I go straight to 140% CPU usage (2 CPUs), and my application becomes completely unresponsive. As far as I can tell, I can leave it indefinitely and it doesn't respond until I finish the capture. Surely there's something wrong here? I have a couple of (native) profiles for you if you're interested. They're large, though, and there's no "attach" function I can see. Here's a summary:

mach_msg_trap 4487
accept 792
semaphore_wait_trap 264
wait4 264
JVM_RaiseSignal 113
ps 22
std::_Rb_tree<int, std::pair<int const, FrameCPUInfo*>, std::_Select1st<std::pair<int const, FrameCPUInfo*> >, std::less<int>, std::allocator<std::pair<int const, FrameCPUInfo*> > >::find(int const&) 20
operator new[](unsigned long) 17
operator new(unsigned long) 13
JVM_MonitorWait 6
__gettimeofday 6
dyld_stub__keymgr_get_and_lock_processwide_ptr 6
YMap<_jmethodID*, YMethod const*>::get_index(_jmethodID*) 5
method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue) 5

What's interesting about this is that it's not true of all my applications. I tried another application, and though the slowdown was noticeable, it wasn't crippling. The application that was fine was Terminator (available from my home page), and the application that was unusable was Edit (also available from my home page).

-*-

I do like the connect/disconnect from application stuff, though, and I like the way you only pay in execution time for what you're using. I've been waiting for a profiler with those two features!

It should be trivial to fix the Mac UI issues (to the extent that I'd be sending a patch if this were OSS), but the CPU profiling needs work.
Anton Katilin
Posts: 6172
Joined: Wed Aug 11, 2004 8:37 am

Post by Anton Katilin »

Hi,

First of all, thank you very much for such a detailed report.

Please find my comments below.
* license dialog: "Accept" and "Decline" buttons the wrong way round for Mac OS (I hit "Decline" because it was where I was expecting "Accept" to be). Also shouldn't have mnemonics (underlined characters on the buttons).

* enter license key dialog: "OK" and "cancel" buttons the wrong way round. dialog probably shouldn't be resizable. Dialog should understand "~/Desktop/yjp-eap.license". It could use mdfind(1) ["mdfind yjp-eap.license"] --- this would even find the key in Mail's inbox, so the user wouldn't have to save it.
Regarding button order. I'm agree that it's not OK to have UI that looks alien for a particular OS. On the other hand, this button swap depending on OS is not that easy to achieve with Java/Swing, and since these particular dialogs are not used very frequently, and this is not a real usability problem. I will add a corresponding request to our list though.

Regarding other problems with the file choose dialog. If we manage to use native L&F, everything should probably be OK (please see my comments below on the usage of Mac L&F).
* you need this to fix the menu bar:

System.setProperty("apple.laf.useScreenMenuBar", "true");

or you can set the property in your Info.plist file. This is hugely annoying; muscle memory will take Mac users to the real menu bar, where they'll be surprised to find nothing, and have to hunt around for the in-window menu. (This eventually annoyed me enough that I tried it, but it seems you're not using JMenuBar?)
We'll investigate whether we can use such menus.
* text *must* be anti-aliased. it looks like i'm running this on a remote Linux box via X11!
Request added.

* in general: why aren't you using the Mac LAF? I'm sure this custom LAF looks okay on Linux, but it's not as nice as Aqua, and even if it were, it would lose just by being the only application on the display that looks different.
There are several UI things that are achieved with help of L&F. So if we simply switch L&F to Aqua now, some UI will stop to work.

We are investigating whether we can do the same with Aqua.

I have a strong will myself :) to support Aqua. I recently started to work with Mac more closely, and found a lot of nice attaracting things there :)
* the "Do you really want..." dialogs should have the buttons the right way round and in the right position (not centered). Also, "Yes" and "No" aren't the done thing: you'd say "Cancel" and "Delete", for example. (Buttons have verbs on them.)
Which dialog in particular do you mean?
* why do you ask me if I really want to quit? It's non-obvious what I'll lose if I do.
You'll probably lose open views that took your time to open. E.g. when you have found a particular leaked object or a hot spot method.

* if "CPU Statistics" is what I'm already looking at, why isn't it ticked on the menu?
Because you may want to open several instances in different tabs. E.g. for comparing something.
* could the auto-generated snapshot names not contain the name jps(1) uses to distinguish the application?

* likewise, "connected to local application at port 63489" isn't very informative.
We'll do it.



* "Start sampling" gives me a profile that claims most of my time is spent in a Thread that's blocked in accept. Which I find hard to believe. I know there are threads working hard from the CPU load, and I've got a rough idea of what they're doing, and since it's interactive, I know it's not a thread blocked waiting for a network connection.

...

Ah, I see: I need to choose "By threads". (Why would I want all threads mixed together by default?) The output's still confusing, though, because pretty much everything says 100%. I really want to know what part of the run time the thread was busy. So 100% of 22000 ms blocked in accept is totally uninteresting, but 90% of 12000 ms in PMatchingBracketHighlighter.caretMoved... that tells me something.

For the network thread and the RMI threads and "process reaper" to come higher up in the profile, though, is madness.
Are you running your application with Java 5.0 or with Java 1.4? It would be easier to comment on this if you could upload the snapshot.


* "Start method tracing". "May noticeably slow down application being profiled"? For me, this is unusable. I go straight to 140% CPU usage (2 CPUs), and my application becomes completely unresponsive. As far as I can tell, I can leave it indefinitely and it doesn't respond until I finish the capture. Surely there's something wrong here? I have a couple of (native) profiles for you if you're interested. They're large, though, and there's no "attach" function I can see. Here's a summary:

mach_msg_trap 4487
accept 792
semaphore_wait_trap 264
wait4 264
JVM_RaiseSignal 113
ps 22
std::_Rb_tree<int, std::pair<int const, FrameCPUInfo*>, std::_Select1st<std::pair<int const, FrameCPUInfo*> >, std::less<int>, std::allocator<std::pair<int const, FrameCPUInfo*> > >::find(int const&) 20
operator new[](unsigned long) 17
operator new(unsigned long) 13
JVM_MonitorWait 6
__gettimeofday 6
dyld_stub__keymgr_get_and_lock_processwide_ptr 6
YMap<_jmethodID*, YMethod const*>::get_index(_jmethodID*) 5
method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue) 5

What's interesting about this is that it's not true of all my applications. I tried another application, and though the slowdown was noticeable, it wasn't crippling. The application that was fine was Terminator (available from my home page), and the application that was unusable was Edit (also available from my home page).
Yes, tracing may make application very slow, depending on number of methods being invoked. The reason is that tracing gives an additional almost contant overhead to each method call. So if there are 2 programs that take same execution time without tracing, may be differently slowed down with tracing.

And tracing is not recommended in most cases, unless e.g. you need method invocation counts.

I would strongly recommend CPU profiling with sampling on Java 5.0.
I do like the connect/disconnect from application stuff, though, and I like the way you only pay in execution time for what you're using. I've been waiting for a profiler with those two features!
Great :)
It should be trivial to fix the Mac UI issues (to the extent that I'd be sending a patch if this were OSS), but the CPU profiling needs work.
We are working on this :)


Thanks again for you valuable comments.

Best regards,
Anton
Anton Katilin
Posts: 6172
Joined: Wed Aug 11, 2004 8:37 am

Post by Anton Katilin »

* the instructions on file:////Users/elliotth/Desktop/YourKit%20Java%20Profiler%204.5%20EAP%20build%20602.app/docs/help/agent.html are wrong in suggesting "To check that Java can load the profiler agent, you can invoke the following command that prints a description of agent parameters:
java -Xrunyjpagent:help", because that doesn't work for Mac OS' Java 5.0 (Apple's fault?). "java -agentlib:yjpagent" is a good enough test, because it shows YKJP startup messages before erroring out.
The help in EAP is not yet updated, and mostly contants a text from the currently released version 4.0, that does not support Java 5.0 on Mac.
elliotth
Posts: 5
Joined: Sun May 15, 2005 6:21 pm

Post by elliotth »

Regarding button order. I'm agree that it's not OK to have UI that looks alien for a particular OS. On the other hand, this button swap depending on OS is not that easy to achieve with Java/Swing, and since these particular dialogs are not used very frequently, and this is not a real usability problem. I will add a corresponding request to our list though.
You're right that those dialogs aren't very frequently used, but this problem seems common to all your dialogs.

Swapping buttons is only not easy if you've been copying & pasting your dialog code rather than factoring the common bits out ;-)
Regarding other problems with the file choose dialog. If we manage to use native L&F, everything should probably be OK (please see my comments below on the usage of Mac L&F).
I'm not 100% sure about that. JFileChooser sucks compared to the AWT dialogs. (In my own programs, I use the Swing dialogs on Linux and the AWT ones elsewhere. Motif is so bad that even JFileChooser is better.)
There are several UI things that are achieved with help of L&F. So if we simply switch L&F to Aqua now, some UI will stop to work.
The only thing I noticed was the use of separators with text in the menus, but you can do that with a disabled normal JMenuItem.
* the "Do you really want..." dialogs should have the buttons the right way round and in the right position (not centered). Also, "Yes" and "No" aren't the done thing: you'd say "Cancel" and "Delete", for example. (Buttons have verbs on them.)
Which dialog in particular do you mean?
The one I was thinking of was the one when you delete a capture. But it's true of the quit dialog, also.
* why do you ask me if I really want to quit? It's non-obvious what I'll lose if I do.
You'll probably lose open views that took your time to open. E.g. when you have found a particular leaked object or a hot spot method.
Don't tell me; tell all your users. Or -- better -- fix it so that all the state is saved.
* if "CPU Statistics" is what I'm already looking at, why isn't it ticked on the menu?
Because you may want to open several instances in different tabs. E.g. for comparing something.
In which case "New View" might be more informative? On the View menu, it comes across as an alternative.
* "Start sampling" gives me a profile that claims most of my time is spent in a Thread that's blocked in accept. Which I find hard to believe. I know there are threads working hard from the CPU load, and I've got a rough idea of what they're doing, and since it's interactive, I know it's not a thread blocked waiting for a network connection.

...

Ah, I see: I need to choose "By threads". (Why would I want all threads mixed together by default?) The output's still confusing, though, because pretty much everything says 100%. I really want to know what part of the run time the thread was busy. So 100% of 22000 ms blocked in accept is totally uninteresting, but 90% of 12000 ms in PMatchingBracketHighlighter.caretMoved... that tells me something.

For the network thread and the RMI threads and "process reaper" to come higher up in the profile, though, is madness.
Are you running your application with Java 5.0 or with Java 1.4? It would be easier to comment on this if you could upload the snapshot.
hydrogen:~$ java -version
java version "1.5.0_02"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_02-56)
Java HotSpot(TM) Client VM (build 1.5.0_02-36, mixed mode, sharing)
hydrogen:~$ uname -a
Darwin hydrogen.local 8.0.0 Darwin Kernel Version 8.0.0: Sat Mar 26 14:15:22 PST 2005; root:xnu-792.obj~1/RELEASE_PPC Power Macintosh powerpc

I'll post the profiles, but I'll do them in separate posts for some semblance of readability.
Yes, tracing may make application very slow, depending on number of methods being invoked. The reason is that tracing gives an additional almost contant overhead to each method call. So if there are 2 programs that take same execution time without tracing, may be differently slowed down with tracing.

And tracing is not recommended in most cases, unless e.g. you need method invocation counts.

I would strongly recommend CPU profiling with sampling on Java 5.0.
If you've already done a sampling profile, is it possible for YourKit to accurately guess whether it's looking at a pathological case? It's really not obvious to me why one application (the terminal emulator) should still work close to its normal speed, but the other (the text editor) is so slow you can't use it.
elliotth
Posts: 5
Joined: Sun May 15, 2005 6:21 pm

Post by elliotth »

Analysis of sampling pid 20869 every 10.000000 milliseconds
Call graph:
262 Thread_100f
262 0x1aec
262 0x1c4c
262 0x4f64
262 CFRunLoopRunSpecific
262 __CFRunLoopRun
262 __CFRunLoopDoSources0
262 __CFRunLoopPerformPerform
262 __NSFireMainThreadPerform
262 +[AWTStarter startAWT:]
262 -[NSApplication run]
262 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
262 _DPSNextEvent
262 BlockUntilNextEventMatchingListInMode
262 ReceiveNextEventCommon
262 RunCurrentEventLoopInMode
262 CFRunLoopRunSpecific
262 __CFRunLoopRun
262 mach_msg
262 mach_msg_trap
262 mach_msg_trap
262 Thread_1103
262 _pthread_body
262 0x4e04
262 0x2aa4
262 operator delete(void*)
262 operator delete(void*)
262 operator new[](unsigned long)
262 operator new[](unsigned long)
262 mach_msg
262 mach_msg_trap
262 mach_msg_trap
262 Thread_1203
262 _pthread_body
262 operator new(unsigned long)
262 operator new(unsigned long)
262 operator new(unsigned long)
262 mach_msg
262 mach_msg_trap
262 mach_msg_trap
262 Thread_1303
262 _pthread_body
262 operator new(unsigned long)
262 operator new[](unsigned long)
262 operator new[](unsigned long)
262 operator new[](unsigned long)
262 operator new[](unsigned long)
262 mach_msg
262 mach_msg_trap
262 mach_msg_trap
262 Thread_1403
262 _pthread_body
262 operator new(unsigned long)
262 JVM_StartThread
262 JVM_StartThread
262 JVM_StartThread
262 JVM_StartThread
262 operator new[](unsigned long)
262 operator new[](unsigned long)
262 0x454d160
262 0x454fab0
262 0x454fab0
262 0x45565b0
262 JVM_MonitorWait
262 JVM_MonitorWait
262 JVM_MonitorWait
262 operator new[](unsigned long)
262 mach_msg
262 mach_msg_trap
262 mach_msg_trap
262 Thread_1503
262 _pthread_body
262 operator new(unsigned long)
262 JVM_StartThread
262 JVM_StartThread
262 JVM_StartThread
262 JVM_StartThread
262 operator new[](unsigned long)
262 operator new[](unsigned long)
262 0x454d160
262 0x454f9c0
262 0x454f9c0
262 0x454fab0
262 0x45565b0
262 JVM_MonitorWait
262 JVM_MonitorWait
262 JVM_MonitorWait
262 operator new[](unsigned long)
262 mach_msg
262 mach_msg_trap
262 mach_msg_trap
262 Thread_1603
262 _pthread_body
262 operator new(unsigned long)
262 JVM_StartThread
262 JVM_StartThread
262 JVM_StartThread
262 JVM_StartThread
262 operator new[](unsigned long)
262 operator new[](unsigned long)
262 0x454d160
262 0x454fab0
262 0x454fab0
262 0x45565b0
262 JVM_MonitorWait
262 JVM_MonitorWait
262 JVM_MonitorWait
262 operator new[](unsigned long)
262 mach_msg
262 mach_msg_trap
262 mach_msg_trap
262 Thread_1703
262 _pthread_body
262 operator new(unsigned long)
262 JVM_StartThread
262 JVM_StartThread
262 JVM_StartThread
262 JVM_StartThread
262 operator new[](unsigned long)
262 operator new[](unsigned long)
262 0x454d160
262 0x454fe10
262 0x454f9c0
262 0x454fab0
262 0x454fab0
262 0x454fab0
262 0x45565b0
262 Java_java_net_PlainSocketImpl_socketAccept
262 accept
262 accept
262 Thread_1803
262 _pthread_body
262 operator new(unsigned long)
262 JVM_StartThread
262 JVM_StartThread
262 JVM_StartThread
262 JVM_StartThread
262 operator new[](unsigned long)
262 operator new[](unsigned long)
262 0x454d160
262 0x454fe10
262 0x454f9c0
262 0x454fab0
262 0x454fab0
262 0x454fab0
262 0x45565b0
262 Java_java_net_PlainSocketImpl_socketAccept
262 accept
262 accept
262 Thread_1903
262 _pthread_body
262 operator new(unsigned long)
262 JVM_StartThread
262 JVM_StartThread
262 JVM_StartThread
262 JVM_StartThread
262 operator new[](unsigned long)
262 operator new[](unsigned long)
262 0x454d160
262 0x454fe10
262 0x454f9c0
262 0x454f9c0
262 0x454fab0
262 0x45565b0
262 JVM_MonitorWait
262 JVM_MonitorWait
262 JVM_MonitorWait
262 operator new[](unsigned long)
262 mach_msg
262 mach_msg_trap
262 mach_msg_trap
262 Thread_1a03
262 _pthread_body
262 operator new(unsigned long)
262 JVM_StartThread
262 JVM_StartThread
262 JVM_StartThread
262 JVM_StartThread
262 operator new[](unsigned long)
262 operator new[](unsigned long)
262 0x454d160
262 0x454fab0
262 0x45565b0
262 JVM_MonitorWait
262 JVM_MonitorWait
262 JVM_MonitorWait
262 operator new[](unsigned long)
262 mach_msg
262 mach_msg_trap
262 mach_msg_trap
262 Thread_1b03
262 _pthread_body
262 operator new(unsigned long)
262 JVM_StartThread
262 JVM_RaiseSignal
262 sampler_thread_entry(_jvmtiEnv*, JNIEnv_*, void*)
262 JVM_RaiseSignal
262 JVM_RaiseSignal
262 JVM_RaiseSignal
262 operator new[](unsigned long)
262 mach_msg
262 mach_msg_trap
262 mach_msg_trap
262 Thread_1c03
262 _pthread_body
262 operator new(unsigned long)
262 JVM_StartThread
262 JVM_RegisterSignal
262 JVM_RegisterSignal
262 semaphore_wait_trap
262 semaphore_wait_trap
262 Thread_1d03
262 _pthread_body
262 operator new(unsigned long)
262 JVM_StartThread
262 JVM_RegisterSignal
262 JVM_RegisterSignal
262 operator new[](unsigned long)
262 operator new[](unsigned long)
262 mach_msg
262 mach_msg_trap
262 mach_msg_trap
262 Thread_1e03
262 _pthread_body
262 operator new(unsigned long)
262 JVM_StartThread
262 JVM_RegisterSignal
262 operator new[](unsigned long)
262 operator new[](unsigned long)
262 mach_msg
262 mach_msg_trap
262 mach_msg_trap
262 Thread_1f03
262 _pthread_body
262 operator new(unsigned long)
261 JVM_RegisterSignal
261 __divdi3
261 operator new[](unsigned long)
261 mach_msg
261 mach_msg_trap
261 mach_msg_trap
1 JVM_FillInStackTrace
1 JVM_FillInStackTrace
262 Thread_2003
262 _pthread_body
262 operator new(unsigned long)
262 JVM_StartThread
262 JVM_StartThread
262 JVM_StartThread
262 JVM_StartThread
262 operator new[](unsigned long)
262 operator new[](unsigned long)
262 0x454d160
262 0x454fe10
262 0x454fab0
262 0x454fab0
262 0x45565b0
262 JVM_MonitorWait
262 JVM_MonitorWait
262 JVM_MonitorWait
262 operator new[](unsigned long)
262 mach_msg
262 mach_msg_trap
262 mach_msg_trap
262 Thread_2103
262 _pthread_body
262 operator new(unsigned long)
262 JVM_StartThread
262 JVM_StartThread
262 JVM_StartThread
262 JVM_StartThread
262 operator new[](unsigned long)
262 operator new[](unsigned long)
262 0x454d160
262 0x454fab0
262 0x454fab0
262 0x454fab0
262 0x454f930
262 0x454fab0
262 0x454fe10
262 0x454fe10
262 0x454fab0
262 0x454fab0
262 0x454fab0
262 0x454fab0
259 0x454fab0
254 0x454fab0
251 0x454fab0
134 0x454fe10
134 0x454fab0
118 0x454fab0
117 0x454fab0
116 0x454fab0
116 0x454fab0
94 0x454fab0
86 0x454f9c0
85 0x454f9c0
56 0x454fd20
28 0x454f9c0
15 0x454fab0
12 0x454fab0
10 0x454fab0
9 0x454fab0
8 0x454fab0
6 0x454fe10
6 0x454fab0
3 0x454f9c0
3 0x454f9c0
3 0x454f930
3 0x45551bc
3 ps
3 JVM_RaiseSignal
3 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
3 JVM_RaiseSignal
2 JVM_RaiseSignal
2 JVM_RaiseSignal
2 operator new[](unsigned long)
2 mach_msg
2 mach_msg_trap
2 mach_msg_trap
1 JVM_RaiseSignal
2 0x454fab0
2 0x454f9c0
2 0x455d92c
2 ps
2 JVM_RaiseSignal
2 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
2 JVM_RaiseSignal
2 JVM_RaiseSignal
2 JVM_RaiseSignal
2 operator new[](unsigned long)
2 mach_msg
2 mach_msg_trap
2 mach_msg_trap
1 0x454f930
1 0x455cc2c
1 ps
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 0x454f9c0
1 0x4555c18
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 0x455dc6c
1 ps
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 0x45551bc
1 operator new[](unsigned long)
1 operator new[](unsigned long)
1 0x45551bc
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
2 0x45551bc
2 ps
2 JVM_RaiseSignal
2 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
2 JVM_RaiseSignal
2 JVM_RaiseSignal
2 JVM_RaiseSignal
2 operator new[](unsigned long)
2 mach_msg
2 mach_msg_trap
2 mach_msg_trap
2 0x45551bc
2 ps
2 JVM_RaiseSignal
2 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 get_time_ns()
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_NanoTime
1 gettimeofday
1 __ppc_gettimeofday
1 __ppc_gettimeofday
1 0x454f9f0
1 0x455cc2c
1 ps
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new(unsigned long)
1 operator new(unsigned long)
12 0x454f9c0
10 0x454f9c0
10 0x454f9c0
10 0x454f9c0
8 0x454f9c0
8 0x454f9c0
7 0x454f9c0
6 0x454f9c0
3 0x454f9c0
1 0x454f9f0
1 0x455cc2c
1 ps
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 0x454fab0
1 0x455dc6c
1 ps
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 0x455d92c
1 ps
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 0x45555d0
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 0x4555c18
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 0x455d92c
1 ps
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 0x454f930
1 0x454f930
1 0x45551bc
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 0x454fab0
1 0x45551bc
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
2 0x454fd20
1 0x454f9c0
1 0x45551bc
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 0x454f9f0
1 0x45551bc
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 getMethodByID(JNIEnv_*, _jmethodID*)
1 getMethodByID(JNIEnv_*, _jmethodID*)
1 0x45551bc
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 0x455d92c
1 ps
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 0x455d92c
1 ps
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
25 0x454fab0
22 0x454fab0
16 0x454fab0
7 0x454fab0
7 0x454f9c0
4 0x454f9c0
4 0x454f9c0
2 0x45551bc
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 0x454f9c0
1 0x454f9c0
1 0x455d92c
1 ps
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 0x455d92c
1 ps
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
2 0x454f930
2 0x45551bc
2 ps
2 JVM_RaiseSignal
2 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
2 JVM_RaiseSignal
2 JVM_RaiseSignal
2 JVM_RaiseSignal
2 operator new[](unsigned long)
2 mach_msg
2 mach_msg_trap
2 mach_msg_trap
1 0x455d92c
1 ps
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 get_time_ns()
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_NanoTime
1 gettimeofday
1 __gettimeofday
1 __gettimeofday
4 0x454f9c0
4 0x454f9c0
3 0x454f9c0
2 0x454f9c0
2 0x454f9c0
2 0x455d92c
2 ps
2 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 ps
1 operator new[](unsigned long)
1 operator new[](unsigned long)
1 0x45551bc
1 ps
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 0x45551bc
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
3 0x454f930
2 0x454f930
2 0x45551bc
2 ps
2 JVM_RaiseSignal
2 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
2 JVM_RaiseSignal
2 JVM_RaiseSignal
2 JVM_RaiseSignal
2 operator new[](unsigned long)
2 mach_msg
2 mach_msg_trap
2 mach_msg_trap
1 0x45551bc
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
2 0x454f9f0
1 0x454f930
1 0x455cc2c
1 ps
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 0x455cc2c
1 ps
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
4 0x454f9c0
3 0x454f9c0
3 0x454f9c0
3 0x454f9c0
1 0x454f9c0
1 0x455d92c
1 ps
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 0x45551bc
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 0x455d92c
1 ps
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_
elliotth
Posts: 5
Joined: Sun May 15, 2005 6:21 pm

Post by elliotth »

(this is a different profile to the other one. the problem was perfectly repeatable.)

Analysis of sampling pid 20869 every 10.000000 milliseconds
Call graph:
264 Thread_100f
264 0x1aec
264 0x1c4c
264 0x4f64
264 CFRunLoopRunSpecific
264 __CFRunLoopRun
264 __CFRunLoopDoSources0
264 __CFRunLoopPerformPerform
264 __NSFireMainThreadPerform
264 +[AWTStarter startAWT:]
264 -[NSApplication run]
264 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
264 _DPSNextEvent
264 BlockUntilNextEventMatchingListInMode
264 ReceiveNextEventCommon
264 RunCurrentEventLoopInMode
264 CFRunLoopRunSpecific
264 __CFRunLoopRun
264 mach_msg
264 mach_msg_trap
264 mach_msg_trap
264 Thread_1103
264 _pthread_body
264 0x4e04
264 0x2aa4
264 operator delete(void*)
264 operator delete(void*)
264 operator new[](unsigned long)
264 operator new[](unsigned long)
264 mach_msg
264 mach_msg_trap
264 mach_msg_trap
264 Thread_1203
264 _pthread_body
264 operator new(unsigned long)
264 operator new(unsigned long)
264 operator new(unsigned long)
264 mach_msg
264 mach_msg_trap
264 mach_msg_trap
264 Thread_1303
264 _pthread_body
264 operator new(unsigned long)
264 operator new[](unsigned long)
264 operator new[](unsigned long)
264 operator new[](unsigned long)
264 operator new[](unsigned long)
264 mach_msg
264 mach_msg_trap
264 mach_msg_trap
264 Thread_1403
264 _pthread_body
264 operator new(unsigned long)
264 JVM_StartThread
264 JVM_StartThread
264 JVM_StartThread
264 JVM_StartThread
264 operator new[](unsigned long)
264 operator new[](unsigned long)
264 0x454d160
264 0x454fab0
264 0x454fab0
264 0x45565b0
264 JVM_MonitorWait
264 JVM_MonitorWait
264 JVM_MonitorWait
264 operator new[](unsigned long)
264 mach_msg
264 mach_msg_trap
264 mach_msg_trap
264 Thread_1503
264 _pthread_body
264 operator new(unsigned long)
264 JVM_StartThread
264 JVM_StartThread
264 JVM_StartThread
264 JVM_StartThread
264 operator new[](unsigned long)
264 operator new[](unsigned long)
264 0x454d160
264 0x454f9c0
264 0x454f9c0
264 0x454fab0
264 0x45565b0
264 JVM_MonitorWait
264 JVM_MonitorWait
264 JVM_MonitorWait
264 operator new[](unsigned long)
264 mach_msg
264 mach_msg_trap
264 mach_msg_trap
264 Thread_1603
264 _pthread_body
264 operator new(unsigned long)
264 JVM_StartThread
264 JVM_StartThread
264 JVM_StartThread
264 JVM_StartThread
264 operator new[](unsigned long)
264 operator new[](unsigned long)
264 0x454d160
264 0x454fab0
264 0x454fab0
264 0x45565b0
264 JVM_MonitorWait
264 JVM_MonitorWait
264 JVM_MonitorWait
264 operator new[](unsigned long)
264 mach_msg
264 mach_msg_trap
264 mach_msg_trap
264 Thread_1703
264 _pthread_body
264 operator new(unsigned long)
264 JVM_StartThread
264 JVM_StartThread
264 JVM_StartThread
264 JVM_StartThread
264 operator new[](unsigned long)
264 operator new[](unsigned long)
264 0x454d160
264 0x454fe10
264 0x454f9c0
264 0x454fab0
264 0x454fab0
264 0x454fab0
264 0x45565b0
264 Java_java_net_PlainSocketImpl_socketAccept
264 accept
264 accept
264 Thread_1803
264 _pthread_body
264 operator new(unsigned long)
264 JVM_StartThread
264 JVM_StartThread
264 JVM_StartThread
264 JVM_StartThread
264 operator new[](unsigned long)
264 operator new[](unsigned long)
264 0x454d160
264 0x454fe10
264 0x454f9c0
264 0x454fab0
264 0x454fab0
264 0x454fab0
264 0x45565b0
264 Java_java_net_PlainSocketImpl_socketAccept
264 accept
264 accept
264 Thread_1903
264 _pthread_body
264 operator new(unsigned long)
264 JVM_StartThread
264 JVM_StartThread
264 JVM_StartThread
264 JVM_StartThread
264 operator new[](unsigned long)
264 operator new[](unsigned long)
264 0x454d160
264 0x454fe10
264 0x454f9c0
264 0x454f9c0
264 0x454fab0
264 0x45565b0
264 JVM_MonitorWait
264 JVM_MonitorWait
264 JVM_MonitorWait
264 operator new[](unsigned long)
264 mach_msg
264 mach_msg_trap
264 mach_msg_trap
264 Thread_1a03
264 _pthread_body
264 operator new(unsigned long)
264 JVM_StartThread
264 JVM_StartThread
264 JVM_StartThread
264 JVM_StartThread
264 operator new[](unsigned long)
264 operator new[](unsigned long)
264 0x454d160
264 0x454fab0
264 0x45565b0
264 JVM_MonitorWait
264 JVM_MonitorWait
264 JVM_MonitorWait
264 operator new[](unsigned long)
264 mach_msg
264 mach_msg_trap
264 mach_msg_trap
264 Thread_1b03
264 _pthread_body
264 operator new(unsigned long)
264 JVM_StartThread
264 JVM_RaiseSignal
264 sampler_thread_entry(_jvmtiEnv*, JNIEnv_*, void*)
264 JVM_RaiseSignal
264 JVM_RaiseSignal
264 JVM_RaiseSignal
264 operator new[](unsigned long)
264 mach_msg
264 mach_msg_trap
264 mach_msg_trap
264 Thread_1c03
264 _pthread_body
264 operator new(unsigned long)
264 JVM_StartThread
264 JVM_RegisterSignal
264 JVM_RegisterSignal
264 semaphore_wait_trap
264 semaphore_wait_trap
264 Thread_1d03
264 _pthread_body
264 operator new(unsigned long)
264 JVM_StartThread
264 JVM_RegisterSignal
264 JVM_RegisterSignal
264 operator new[](unsigned long)
264 operator new[](unsigned long)
264 mach_msg
264 mach_msg_trap
264 mach_msg_trap
264 Thread_1e03
264 _pthread_body
264 operator new(unsigned long)
264 JVM_StartThread
264 JVM_RegisterSignal
264 operator new[](unsigned long)
264 operator new[](unsigned long)
264 mach_msg
264 mach_msg_trap
264 mach_msg_trap
264 Thread_1f03
264 _pthread_body
263 operator new(unsigned long)
263 JVM_RegisterSignal
263 __divdi3
263 operator new[](unsigned long)
263 mach_msg
263 mach_msg_trap
263 mach_msg_trap
1 JVM_FillInStackTrace
1 JVM_FillInStackTrace
264 Thread_2003
264 _pthread_body
264 operator new(unsigned long)
264 JVM_StartThread
264 JVM_StartThread
264 JVM_StartThread
264 JVM_StartThread
264 operator new[](unsigned long)
264 operator new[](unsigned long)
264 0x454d160
264 0x454fe10
264 0x454fab0
264 0x454fab0
264 0x45565b0
264 JVM_MonitorWait
264 JVM_MonitorWait
264 JVM_MonitorWait
264 operator new[](unsigned long)
264 mach_msg
264 mach_msg_trap
264 mach_msg_trap
264 Thread_2103
264 _pthread_body
264 operator new(unsigned long)
264 JVM_StartThread
264 JVM_StartThread
264 JVM_StartThread
264 JVM_StartThread
264 operator new[](unsigned long)
264 operator new[](unsigned long)
264 0x454d160
264 0x454fab0
264 0x454fab0
264 0x454fab0
264 0x454f930
264 0x454fab0
264 0x454fab0
264 0x454fab0
264 0x454fab0
264 0x454f930
264 0x454f930
264 0x454fab0
264 0x454fab0
264 0x454fab0
264 0x454fab0
264 0x454fab0
264 0x454fab0
264 0x454fab0
264 0x454fab0
264 0x454fe10
264 0x454fe10
264 0x454fe10
264 0x454fe10
264 0x454fab0
264 0x454fab0
264 0x454fab0
264 0x454fab0
264 0x454fe10
264 0x454f9c0
264 0x454fab0
256 0x454fd20
254 0x454f9c0
216 0x454fd20
213 0x454f9c0
98 0x454f930
91 0x454f930
86 0x454f930
85 0x454f930
54 0x454f9f0
26 0x454f9f0
14 0x454f9f0
9 0x454f9f0
4 0x455cc2c
3 ps
3 JVM_RaiseSignal
2 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
2 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 ps
1 operator new[](unsigned long)
1 operator new[](unsigned long)
1 operator new[](unsigned long)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
3 0x45551bc
3 ps
3 JVM_RaiseSignal
3 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
2 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new(unsigned long)
1 operator new(unsigned long)
1 std::_Rb_tree<int, std::pair<int const, FrameCPUInfo*>, std::_Select1st<std::pair<int const, FrameCPUInfo*> >, std::less<int>, std::allocator<std::pair<int const, FrameCPUInfo*> > >::find(int const&)
1 std::_Rb_tree<int, std::pair<int const, FrameCPUInfo*>, std::_Select1st<std::pair<int const, FrameCPUInfo*> >, std::less<int>, std::allocator<std::pair<int const, FrameCPUInfo*> > >::find(int const&)
2 ps
2 ps
3 0x455cc2c
2 ps
2 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 pthread_getspecific
1 pthread_getspecific
1 JVM_RaiseSignal
1 JVM_RaiseSignal
2 0x45551bc
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 getMethodByID(JNIEnv_*, _jmethodID*)
1 YMap<_jmethodID*, YMethod const*>::get_index(_jmethodID*)
1 YMap<_jmethodID*, YMethod const*>::get_index(_jmethodID*)
5 0x454f930
2 0x455cc2c
2 ps
2 JVM_RaiseSignal
2 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
2 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 0x45551bc
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 YFrameStorage::getChild(int, YMethod const*)
1 YFrameStorage::getChild(int, YMethod const*)
1 0x4557a14
1 0x4557a14
1 ps
1 ps
2 0x45551bc
2 ps
2 JVM_RaiseSignal
2 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
2 JVM_RaiseSignal
2 JVM_RaiseSignal
2 0x455cc2c
2 ps
1 JVM_GetInterfaceVersion
1 JVM_GetInterfaceVersion
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 get_time_ns()
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_NanoTime
1 gettimeofday
1 __gettimeofday
1 __gettimeofday
2 ps
2 ps
1 0x454fcc0
1 0x45551bc
1 ps
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
23 0x454f930
18 0x454f930
13 0x454f9f0
7 0x454f9f0
4 0x45551bc
4 ps
4 JVM_RaiseSignal
4 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
2 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new(unsigned long)
1 operator new(unsigned long)
1 check_JVMTI_error_impl(jvmtiError, char const*, int)
1 check_JVMTI_error_impl(jvmtiError, char const*, int)
1 getMethodByID(JNIEnv_*, _jmethodID*)
1 YMap<_jmethodID*, YMethod const*>::get(_jmethodID*)
1 YMap<_jmethodID*, YMethod const*>::get_index(_jmethodID*)
1 YMap<_jmethodID*, YMethod const*>::get_index(_jmethodID*)
3 0x455cc2c
3 ps
3 JVM_RaiseSignal
2 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 getThreadInfo(JNIEnv_*, _jobject*)
1 getThreadInfo(JNIEnv_*, _jobject*)
1 std::_Rb_tree<int, std::pair<int const, FrameCPUInfo*>, std::_Select1st<std::pair<int const, FrameCPUInfo*> >, std::less<int>, std::allocator<std::pair<int const, FrameCPUInfo*> > >::find(int const&)
1 std::_Rb_tree<int, std::pair<int const, FrameCPUInfo*>, std::_Select1st<std::pair<int const, FrameCPUInfo*> >, std::less<int>, std::allocator<std::pair<int const, FrameCPUInfo*> > >::find(int const&)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
5 0x455cc2c
3 ps
3 JVM_RaiseSignal
2 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 std::_Rb_tree<int, std::pair<int const, FrameCPUInfo*>, std::_Select1st<std::pair<int const, FrameCPUInfo*> >, std::less<int>, std::allocator<std::pair<int const, FrameCPUInfo*> > >::find(int const&)
1 std::_Rb_tree<int, std::pair<int const, FrameCPUInfo*>, std::_Select1st<std::pair<int const, FrameCPUInfo*> >, std::less<int>, std::allocator<std::pair<int const, FrameCPUInfo*> > >::find(int const&)
1 pthread_getspecific
1 pthread_getspecific
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new[](unsigned long)
1 operator new[](unsigned long)
1 ps
1 ps
3 0x455cc2c
3 ps
2 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 ps
1 ps
1 0x45551bc
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 0x455ab28
1 0x455ab28
4 0x455cc2c
3 ps
3 JVM_RaiseSignal
2 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
2 std::_Rb_tree<int, std::pair<int const, FrameCPUInfo*>, std::_Select1st<std::pair<int const, FrameCPUInfo*> >, std::less<int>, std::allocator<std::pair<int const, FrameCPUInfo*> > >::find(int const&)
2 std::_Rb_tree<int, std::pair<int const, FrameCPUInfo*>, std::_Select1st<std::pair<int const, FrameCPUInfo*> >, std::less<int>, std::allocator<std::pair<int const, FrameCPUInfo*> > >::find(int const&)
1 __stub_getrealaddr
1 __stub_getrealaddr
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 0x45551bc
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
3 0x455cc2c
2 JVM_RaiseSignal
2 JVM_RaiseSignal
1 ps
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 std::_Rb_tree<int, std::pair<int const, FrameCPUInfo*>, std::_Select1st<std::pair<int const, FrameCPUInfo*> >, std::less<int>, std::allocator<std::pair<int const, FrameCPUInfo*> > >::find(int const&)
1 std::_Rb_tree<int, std::pair<int const, FrameCPUInfo*>, std::_Select1st<std::pair<int const, FrameCPUInfo*> >, std::less<int>, std::allocator<std::pair<int const, FrameCPUInfo*> > >::find(int const&)
1 0x455e7d8
1 0x455e7d8
1 ps
1 ps
31 0x454f930
29 0x454f930
26 0x454f930
16 0x454f9f0
6 0x454f9f0
3 0x454f9f0
2 0x454f9f0
2 0x455cc2c
2 ps
2 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new(unsigned long)
1 operator new(unsigned long)
1 ps
1 operator new[](unsigned long)
1 operator new[](unsigned long)
1 operator new[](unsigned long)
1 0x455cc2c
1 ps
1 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
2 0x45551bc
2 ps
2 JVM_RaiseSignal
2 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 getMethodByID(JNIEnv_*, _jmethodID*)
1 YMap<_jmethodID*, YMethod const*>::get(_jmethodID*)
1 YMap<_jmethodID*, YMethod const*>::get_index(_jmethodID*)
1 YMap<_jmethodID*, YMethod const*>::isEqual(_jmethodID*, _jmethodID*)
1 YMap<_jmethodID*, YMethod const*>::isEqual(_jmethodID*, _jmethodID*)
1 0x455cc2c
1 JVM_RaiseSignal
1 JVM_RaiseSignal
3 0x454fcc0
2 0x455cc2c
2 ps
2 JVM_RaiseSignal
1 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
1 std::_Rb_tree<int, std::pair<int const, FrameCPUInfo*>, std::_Select1st<std::pair<int const, FrameCPUInfo*> >, std::less<int>, std::allocator<std::pair<int const, FrameCPUInfo*> > >::find(int const&)
1 std::_Rb_tree<int, std::pair<int const, FrameCPUInfo*>, std::_Select1st<std::pair<int const, FrameCPUInfo*> >, std::less<int>, std::allocator<std::pair<int const, FrameCPUInfo*> > >::find(int const&)
1 ps
1 operator new[](unsigned long)
1 operator new[](unsigned long)
1 operator new[](unsigned long)
1 dyld_stub__keymgr_get_and_lock_processwide_ptr
1 dyld_stub__keymgr_get_and_lock_processwide_ptr
1 0x45551bc
1 JVM_MonitorWait
1 JVM_MonitorWait
3 0x45551bc
2 JVM_RaiseSignal
2 JVM_RaiseSignal
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 is_current_thread_CPU_time_available()
1 is_current_thread_CPU_time_available()
2 0x455cc2c
2 ps
1 JVM_MonitorWait
1 JVM_MonitorWait
1 JVM_RaiseSignal
1 ps
1 operator new[](unsigned long)
1 operator new[](unsigned long)
1 operator new[](unsigned long)
1 operator new[](unsigned long)
1 0x454f930
1 0x454f930
1 0x45551bc
1 ps
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 0x455cc0c
1 0x455cc0c
5 0x454f930
3 0x454f9f0
2 0x45551bc
2 ps
2 JVM_RaiseSignal
2 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 operator new(unsigned long)
1 operator new(unsigned long)
1 get_time_ns()
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_NanoTime
1 gettimeofday
1 __gettimeofday
1 __gettimeofday
1 0x455cc2c
1 ps
1 operator new(unsigned long)
1 operator new(unsigned long)
1 0x455cc2c
1 ps
1 JVM_RaiseSignal
1 ps
1 operator new[](unsigned long)
1 operator new[](unsigned long)
1 operator new[](unsigned long)
1 operator new[](unsigned long)
1 ps
1 ps
3 0x455cc2c
3 ps
3 JVM_RaiseSignal
2 method_exit_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*, unsigned char, jvalue)
2 JVM_RaiseSignal
2 JVM_RaiseSignal
1 ps
1 operator new[](unsigned long)
1 operator new[](unsigned long)
1 operator new[](unsigned long)
1 0x45551bc
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 dyld_stub_pthread_getspecific
1 dyld_stub_pthread_getspecific
1 0x4558b8c
1 0x4558b8c
2 0x454f9f0
1 0x454fcc0
1 0x45551bc
1 ps
1 JVM_RaiseSignal
1 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 ps
1 ps
1 0x455cc2c
1 ps
1 JVM_RaiseSignal
1 ps
1 operator new[](unsigned long)
1 operator new[](unsigned long)
1 operator new[](unsigned long)
2 0x45551bc
2 ps
2 JVM_RaiseSignal
2 method_entry_handler(_jvmtiEnv*, JNIEnv_*, _jobject*, _jmethodID*)
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 std::_Rb_tree<int, std::pair<int const, FrameCPUInfo*>, std::_Select1st<std::pair<int const, FrameCPUInfo*> >, std::less<int>, std::allocator<std::pair<int const, FrameCPUInfo*> > >::find(int const&)
1 std::_Rb_tree<int, std::pair<int const, FrameCPUInfo*>, std::_Select1st<std::pair<int const, FrameCPUInfo*> >, std::less<int>, std::allocator<std::pair<int const, FrameCPUInfo*> > >::find(int const&)
1 0x455cc2c
1 ps
1 JVM_RaiseSignal
1 JVM_RaiseSignal
1 JVM_RaiseSignal
4 0x454f9f0
2 0x455cc2c
2 ps
Vladimir Kondratyev
Posts: 1624
Joined: Tue Aug 10, 2004 7:52 pm

Post by Vladimir Kondratyev »

I have a couple of (native) profiles for you if you're interested. They're large, though, and there's no "attach" function I can see.
What native profilers are you using? We are very interested.

Regards,
Vladimir
pepijnve
Posts: 21
Joined: Tue May 17, 2005 1:38 pm

Post by pepijnve »

Given that elliotth is using osx, Shark seems like the most likely candidate.
elliotth
Posts: 5
Joined: Sun May 15, 2005 6:21 pm

Post by elliotth »

pepijnve wrote:Given that elliotth is using osx, Shark seems like the most likely candidate.
Shark's good, but it's not terribly convenient. I used Activity Monitor's "Sample" functionality, because it's only ever two clicks away.
Post Reply