相关疑难解决方法(0)

JVM在停止世界暂停期间用于阻止线程的机制

我在接受采访时听到了这个问题,无法提供答案.后来我通过互联网搜索,仍然没有找到答案.任何人都可以告诉我JVM如何在收集垃圾时停止世界时停止线程以及它如何再次运行它们.

garbage-collection jvm

17
推荐指数
1
解决办法
2083
查看次数

哪些VM或GC支持JNI固定?

Get<PrimitiveType>ArrayElements系列函数被记录为复制数组,或将它们固定到位(并且这样做,防止压缩垃圾收集器移动它们).它被记录为一种更安全,限制性更小的替代方案GetPrimitiveArrayCritical.但是,我想知道哪些虚拟机和/或垃圾收集器(如果有的话)实际固定数组而不是复制它们.

java java-native-interface

6
推荐指数
2
解决办法
277
查看次数

调用本机代码时JVM是否会停止?

从Java的字节码调用机器代码时是否有任何性能影响?由于机器代码是"非托管"的,并且它没有"意识到"Java的内部结构,这可能导致JVM的内部调度程序暂停或类似的东西?

我是Java的新手,所以也许这甚至不相关,请帮忙.

我知道在Erlang中他们遇到了这个问题,VM在调用机器代码时基本停止了.我希望Java不是这种情况.是吗?

java jvm

5
推荐指数
1
解决办法
256
查看次数

在gc期间调用JNI函数时JVM崩溃

我们有一个Java应用程序,它具有一个多线程(pthread)的JNI层,并将根据从底层网络收到的消息回调Java级别.

我们注意到每次崩溃都是由gc引起的.我们甚至可以通过jmap -histo <pid>在JNI层从网络接收消息时通过调用手动触发gc来模拟这种崩溃.

鉴于我们在本文中的GC期间读到的有关JVM行为的信息,/sf/answers/2758102721/,我们仍然无法弄清楚为什么这样的崩溃与gc相关,因为JNI函数调用在gc期间被阻止.

如果有人能够阐明这一点,那就太好了.提前致谢.

以下是我们在应用程序崩溃后收集的堆栈跟踪.

Program terminated with signal 6, Aborted.
#0  0x0000003cdce325e5 in raise () from /lib64/libc.so.6
#1  0x0000003cdce33dc5 in abort () from /lib64/libc.so.6
#2  0x00007fdafe2516b5 in os::abort(bool) () from /usr/java/jdk1.8.0_65/jre/lib/amd64/server/libjvm.so
#3  0x00007fdafe3efbf3 in VMError::report_and_die() ()
   from /usr/java/jdk1.8.0_65/jre/lib/amd64/server/libjvm.so
#4  0x00007fdafde2f3e2 in report_vm_error(char const*, int, char const*, char const*) ()
   from /usr/java/jdk1.8.0_65/jre/lib/amd64/server/libjvm.so
#5  0x00007fdafe24c1ff in os::PlatformEvent::park() ()
   from /usr/java/jdk1.8.0_65/jre/lib/amd64/server/libjvm.so
#6  0x00007fdafe20c538 in Monitor::ILock(Thread*) ()
   from /usr/java/jdk1.8.0_65/jre/lib/amd64/server/libjvm.so
#7  0x00007fdafe20c73f in Monitor::lock_without_safepoint_check() ()
   from /usr/java/jdk1.8.0_65/jre/lib/amd64/server/libjvm.so
#8 …
Run Code Online (Sandbox Code Playgroud)

java crash java-native-interface garbage-collection jvm

2
推荐指数
1
解决办法
1983
查看次数