Here's a thread-dump on Linux when soapui hangs on a large attachment, maybe it's of some use to you...
Full thread dump Java HotSpot(TM) Server VM (14.0-b16 mixed mode):
"LogList Updater for soapUI log" prio=10 tid=0x8efd8000 nid=0x48d9 in Object.wait() [0x8ba45000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at java.awt.EventQueue.invokeAndWait(EventQueue.java:992)
- locked <0x976fd418> (a java.awt.EventQueue$1AWTInvocationLock)
at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1323)
at com.eviware.soapui.support.log.JLogList$LogListModel.run(JLogList.java:482)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
"LogList Updater for http log" prio=10 tid=0x08983400 nid=0x48d8 in Object.wait() [0x8b7fe000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at java.awt.EventQueue.invokeAndWait(EventQueue.java:992)
- locked <0x976fd310> (a java.awt.EventQueue$1AWTInvocationLock)
at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1323)
at com.eviware.soapui.support.log.JLogList$LogListModel.run(JLogList.java:482)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
"ModelItemIconAnimator for Request 1" prio=10 tid=0x08c04800 nid=0x48d7 waiting on condition [0x87f64000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x94309ed8> (a java.util.concurrent.SynchronousQueue$TransferStack)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:424)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:323)
at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:874)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:945)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
"pool-1-thread-19" prio=10 tid=0x8c706400 nid=0x48d6 waiting for monitor entry [0x8b9a3000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.awt.KeyboardFocusManager.clearMostRecentFocusOwner(KeyboardFocusManager.java:1777)
- waiting to lock <0x946f4968> (a java.awt.Component$AWTTreeLock)
at java.awt.Component.disable(Component.java:1426)
at javax.swing.JComponent.disable(JComponent.java:3581)
at java.awt.Component.enable(Component.java:1415)
at java.awt.Component.setEnabled(Component.java:1378)
at javax.swing.JComponent.setEnabled(JComponent.java:2649)
at javax.swing.AbstractButton.setEnabled(AbstractButton.java:2064)
at com.eviware.soapui.impl.support.panels.AbstractHttpRequestDesktopPanel.afterSubmit(AbstractHttpRequestDesktopPanel.java:572)
at com.eviware.soapui.impl.wsdl.panels.request.AbstractWsdlRequestDesktopPanel.afterSubmit(AbstractWsdlRequestDesktopPanel.java:158)
at com.eviware.soapui.impl.wsdl.WsdlSubmit.run(WsdlSubmit.java:150)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
"ReferenceQueueMonitor" prio=10 tid=0x8c500400 nid=0x2e0f in Object.wait() [0x8c2fe000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x955bff20> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
- locked <0x955bff20> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
at com.eviware.soapui.support.xml.JXEditTextArea$1.run(JXEditTextArea.java:294)
at java.lang.Thread.run(Thread.java:619)
"MultiThreadedHttpConnectionManager cleanup" daemon prio=10 tid=0x8bd5b800 nid=0x2e07 in Object.wait() [0x8b9f4000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x954f0588> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
- locked <0x954f0588> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
at com.eviware.soapui.impl.wsdl.support.http.SoapUIMultiThreadedHttpConnectionManager$ReferenceQueueThread.run(SoapUIMultiThreadedHttpConnectionManager.java:1326)
"AutoSave Timer" prio=10 tid=0x8bd07800 nid=0x2dfd in Object.wait() [0x8c0ad000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:509)
- locked <0x94b22260> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:462)
"TimerQueue" daemon prio=10 tid=0x8bd03000 nid=0x2dfc in Object.wait() [0x8c0fe000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at javax.swing.TimerQueue.postExpiredTimers(TimerQueue.java:218)
- locked <0x94b697f8> (a javax.swing.TimerQueue)
at javax.swing.TimerQueue.run(TimerQueue.java:234)
- locked <0x94b697f8> (a javax.swing.TimerQueue)
at java.lang.Thread.run(Thread.java:619)
"MemoryMonitor" daemon prio=10 tid=0x8bd01400 nid=0x2dfb waiting on condition [0x8c25c000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.eviware.soapui.support.monitor.MonitorPanel$Surface.run(MonitorPanel.java:272)
at java.lang.Thread.run(Thread.java:619)
"Thread-2" daemon prio=10 tid=0x8bf10000 nid=0x2df8 waiting on condition [0x8c49b000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at org.apache.log4j.helpers.FileWatchdog.run(FileWatchdog.java:103)
"com.jniwrapper.NativeResourceCollector" daemon prio=10 tid=0x8ef86800 nid=0x2df7 in Object.wait() [0x8c882000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x94357288> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
- locked <0x94357288> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
at com.jniwrapper.a.run(SourceFile:159)
"DestroyJavaVM" prio=10 tid=0x08742800 nid=0x2cca waiting on condition [0x00000000]
java.lang.Thread.State: RUNNABLE
"AWT-EventQueue-0" prio=10 tid=0x08af3400 nid=0x2df6 runnable [0x8c8d3000]
java.lang.Thread.State: RUNNABLE
at javax.swing.text.GapContent.getChars(GapContent.java:196)
at javax.swing.text.AbstractDocument.getText(AbstractDocument.java:797)
at javax.swing.text.GlyphView.getText(GlyphView.java:116)
at javax.swing.text.GlyphView.getBreakSpotUseBreakIterator(GlyphView.java:780)
at javax.swing.text.GlyphView.getBreakSpot(GlyphView.java:730)
at javax.swing.text.GlyphView.getBreakWeight(GlyphView.java:670)
at javax.swing.text.FlowView$FlowStrategy.layoutRow(FlowView.java:508)
at javax.swing.text.TextLayoutStrategy.layoutRow(TextLayoutStrategy.java:109)
at javax.swing.text.FlowView$FlowStrategy.layout(FlowView.java:460)
at javax.swing.text.TextLayoutStrategy.layout(TextLayoutStrategy.java:92)
at javax.swing.text.FlowView.layout(FlowView.java:184)
at javax.swing.text.BoxView.setSize(BoxView.java:380)
at javax.swing.plaf.basic.BasicTextAreaUI$PlainParagraph.setSize(BasicTextAreaUI.java:287)
at javax.swing.text.BoxView.updateChildSizes(BoxView.java:349)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:331)
at javax.swing.text.BoxView.layout(BoxView.java:691)
at javax.swing.text.BoxView.setSize(BoxView.java:380)
at javax.swing.plaf.basic.BasicTextUI$RootView.setSize(BasicTextUI.java:1702)
at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:900)
at javax.swing.plaf.basic.BasicTextAreaUI.getPreferredSize(BasicTextAreaUI.java:103)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1634)
at javax.swing.JTextArea.getPreferredSize(JTextArea.java:617)
at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:769)
at java.awt.Container.layout(Container.java:1421)
at java.awt.Container.doLayout(Container.java:1410)
at java.awt.Container.validateTree(Container.java:1507)
at java.awt.Container.validateTree(Container.java:1513)
at java.awt.Container.validateTree(Container.java:1513)
at java.awt.Container.validateTree(Container.java:1513)
at java.awt.Container.validateTree(Container.java:1513)
at java.awt.Container.validateTree(Container.java:1513)
at java.awt.Container.validateTree(Container.java:1513)
at java.awt.Container.validateTree(Container.java:1513)
at java.awt.Container.validateTree(Container.java:1513)
at java.awt.Container.validateTree(Container.java:1513)
at java.awt.Container.validateTree(Container.java:1513)
at java.awt.Container.validateTree(Container.java:1513)
at java.awt.Container.validateTree(Container.java:1513)
at java.awt.Container.validateTree(Container.java:1513)
at java.awt.Container.validate(Container.java:1480)
- locked <0x946f4968> (a java.awt.Component$AWTTreeLock)
at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:670)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:127)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
"AWT-Shutdown" prio=10 tid=0x08aea800 nid=0x2df5 in Object.wait() [0x8c924000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:259)
- locked <0x9431b910> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:619)
"AWT-XAWT" daemon prio=10 tid=0x8ef59400 nid=0x2df4 runnable [0x8c975000]
java.lang.Thread.State: RUNNABLE
at sun.awt.X11.XToolkit.waitForEvents(Native Method)
at sun.awt.X11.XToolkit.run(XToolkit.java:548)
at sun.awt.X11.XToolkit.run(XToolkit.java:523)
at java.lang.Thread.run(Thread.java:619)
"Java2D Disposer" daemon prio=10 tid=0x8ef81c00 nid=0x2de6 in Object.wait() [0x8c9c6000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
- locked <0x94329540> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
at sun.java2d.Disposer.run(Disposer.java:125)
at java.lang.Thread.run(Thread.java:619)
"XpcMessageLoop" prio=10 tid=0x8ef5b800 nid=0x2d8d runnable [0x8f091000]
java.lang.Thread.State: RUNNABLE
at org.mozilla.xpcom.internal.XPCOMJavaProxy.callXPCOMMethod(Native Method)
at org.mozilla.xpcom.internal.XPCOMJavaProxy.invoke(XPCOMJavaProxy.java:143)
at $Proxy8.run(Unknown Source)
at com.teamdev.xpcom.impl.AppShellMessageLoop.run(SourceFile:48)
- locked <0x9432ce20> (a com.teamdev.xpcom.impl.AppShellMessageLoop)
at com.teamdev.xpcom.impl.awt.linux.AwtLinuxPlatform.a(SourceFile:176)
at com.teamdev.xpcom.impl.G.initialize(SourceFile:81)
at com.teamdev.xpcom.c.run(SourceFile:159)
"Low Memory Detector" daemon prio=10 tid=0x8fcae000 nid=0x2cd5 runnable [0x00000000]
java.lang.Thread.State: RUNNABLE
"CompilerThread1" daemon prio=10 tid=0x8fcac000 nid=0x2cd4 waiting on condition [0x00000000]
java.lang.Thread.State: RUNNABLE
"CompilerThread0" daemon prio=10 tid=0x8fcaa800 nid=0x2cd3 waiting on condition [0x00000000]
java.lang.Thread.State: RUNNABLE
"Signal Dispatcher" daemon prio=10 tid=0x8fca9000 nid=0x2cd2 waiting on condition [0x00000000]
java.lang.Thread.State: RUNNABLE
"Finalizer" daemon prio=10 tid=0x8fc98c00 nid=0x2cd1 in Object.wait() [0x8fa17000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
- locked <0x942002a0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
"Reference Handler" daemon prio=10 tid=0x8fc97400 nid=0x2cd0 in Object.wait() [0x8fa68000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
- locked <0x94200328> (a java.lang.ref.Reference$Lock)
"VM Thread" prio=10 tid=0x8fc93400 nid=0x2ccf runnable
"GC task thread#0 (ParallelGC)" prio=10 tid=0x08749000 nid=0x2ccb runnable
"GC task thread#1 (ParallelGC)" prio=10 tid=0x0874a800 nid=0x2ccc runnable
"GC task thread#2 (ParallelGC)" prio=10 tid=0x0874c000 nid=0x2ccd runnable
"GC task thread#3 (ParallelGC)" prio=10 tid=0x0874d400 nid=0x2cce runnable
"VM Periodic Task Thread" prio=10 tid=0x8fcb0000 nid=0x2cd6 waiting on condition
JNI global references: 1613
Heap
PSYoungGen total 38336K, used 17710K [0xb0920000, 0xb41d0000, 0xb4200000)
eden space 18944K, 93% used [0xb0920000,0xb1a6b9d0,0xb1ba0000)
from space 19392K, 0% used [0xb1ba0000,0xb1ba0000,0xb2e90000)
to space 19392K, 0% used [0xb2ee0000,0xb2ee0000,0xb41d0000)
PSOldGen total 466048K, used 451976K [0x94200000, 0xb0920000, 0xb0920000)
object space 466048K, 96% used [0x94200000,0xafb62120,0xb0920000)
PSPermGen total 31104K, used 30758K [0x90200000, 0x92060000, 0x94200000)
object space 31104K, 98% used [0x90200000,0x920099b8,0x92060000)