如果未初始化对象的特殊类型与除自身之外的特殊类型合并,则有效指令序列不得在操作数堆栈上或在向后分支的目标上的局部变量中具有未初始化对象
这是验证者拒绝的一个例子 - 我怀疑它应该被接受:
public scala.Tuple2<scala.runtime.Null$, scala.runtime.Null$> apply(boolean);
flags: ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
0: new #12 // class scala/Tuple2
3: dup
4: aconst_null
5: iload_1
6: ifne 5
9: aconst_null
10: invokespecial #16 // Method scala/Tuple2."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
13: areturn
LocalVariableTable:
Start Length Slot Name Signature
0 14 0 this LC;
0 14 1 x Z
StackMapTable: number_of_entries = 1
frame_type = 255 /* full_frame */
offset_delta = 5
locals = [ class C, int ]
stack = …Run Code Online (Sandbox Code Playgroud) 嗨,谢谢你的阅读,
运行我的程序时出现以下错误,无法弄清楚解决方案是什么.我也在这里查看了所有主题,但是无法解决我的问题.这里的错误:
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f0b024734cd, pid=21947, tid=139676677560592
#
# JRE version: 6.0_15-b03
# Java VM: Java HotSpot(TM) 64-Bit Server VM (14.1-b02 mixed mode linux-amd64 )
# Problematic frame:
# V [libjvm.so+0x5df4cd]
Run Code Online (Sandbox Code Playgroud)
我的程序需要一些序列化的对象并反序列化它们,这就是问题发生的地方.然而奇怪的是,具有相同反序列化对象的相同代码在具有相同硬件,操作系统等的其他机器上完全正常工作(我不确定这是否与硬件相关,但我猜它不是) .
这是我在Java中执行的代码:
FileInputStream f_in = new FileInputStream(path+"/"+docNum+"/"+docNum+"Part.data");
ObjectInputStream obj_in = new ObjectInputStream (f_in);
Object obj = obj_in.readObject();
//ERROR
FileInputStream f_in5 = new FileInputStream(path+"/"+docNum+"/"+docNum+"Part_clustIdx_pairClustIdxs_.data");
ObjectInputStream obj_in5 = new ObjectInputStream (f_in5);
Object clustIdx_pairClustIdxs = obj_in5.readObject(); …Run Code Online (Sandbox Code Playgroud) 一天前,经过几个月的正常工作,我们的java应用程序偶尔会崩溃并出现以下错误:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (safepoint.cpp:247), pid=2075, tid=140042095163136
# guarantee(PageArmed == 0) failed: invariant
#
# JRE version: 6.0_23-b05
# Java VM: Java HotSpot(TM) 64-Bit Server VM (19.0-b09 mixed mode linux-amd64 compressed oops)
# An error report file with more information is saved as:
# /var/chat/jSocketer/build/hs_err_pid2075.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
Run Code Online (Sandbox Code Playgroud)
我查看了hs_err_pid2075.log,看到有一个活动线程处理网络通信.但是,在过去几个月中没有进行任何应用程序或环境更改.也没有任何负载增长.我该怎么做才能理解,崩溃的原因是什么?是否有任何常见的步骤来调查jvm崩溃?
升级到Java 8后,我的应用程序开始以非确定性方式失败.它不会抛出异常或打印错误消息.失败的唯一标志是退出代码-559038737.有没有遇到过这个?
昨天当我运行WebLogic Application Server 11g安装程序时,我遇到了OutOfMemory错误,所以我用Google搜索了答案:
java -Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m -jar wls1032_generic.jar
Run Code Online (Sandbox Code Playgroud)
一切正常:)
但是,当我对解决方案三思而后行时,我可能犯了一个错误:我怎么知道这些设置的当前设置?我当然需要在覆盖它们之前检查它们的值,对吧?
有什么想法吗?
相关链接:人们在SO的另一个帖子中提出了试错法,这并不理想.
提前谢谢了.
有时我会启动一个MATLAB脚本并意识到太晚了,它会输出太多的数字.最终我得到了一个
线程"AWT-EventQueue-0"中的异常java.lang.OutOfMemoryError:Java堆空间
这可以很容易地在我的机器上使用
for i=1:inf
figure;
end
Run Code Online (Sandbox Code Playgroud)
在使用128 MB Java堆的标准设置(首选项/ Java堆内存)崩溃之前,我得到大约90个数字,而将堆加倍到256 MB则给出了大约200个数字.
您是否看到了避免 Java错误消息的方法?如果没有足够的内存供另一个人使用,我希望我的脚本能够被告知而不是崩溃.
也许我可以有一个包装器figure(以某种方式?)检查有多少Java堆可用,如果没有足够的空间,它会拒绝打开一个新的数字?
更新
使用下面的答案,我得到了一个很好的图表,说明Memory Java有多少可用内容:
![figure; plot(freeMem/1E6,'x'); ylabel('java.lang.Runtime.getRuntime.freeMemory [MB]'); xlabel('创建的空数字');](https://i.stack.imgur.com/EMnHC.png)
这是使用
for i=1:inf
java.lang.Runtime.getRuntime.gc
fprintf('%3.0f: %1.0f Byte free\n',i,java.lang.Runtime.getRuntime.freeMemory);
figure;
end
Run Code Online (Sandbox Code Playgroud)
我假设开头的增加意味着垃圾收集每次调用它时只会做一些努力吗?
更新2 - 我的解决方案
使用我在这里获得的帮助,我实现了以下解决方案作为figure.m重载并调用内置figure命令:
function varargout=figure(varargin)
memcutoff = 10E6; % keep at least this amount of bytes free
memkeyboard= 3E6; % if memory drops below this, interrupt execution and go to keyboard mode
global refuse_new_figures
if refuse_new_figures
warning('jb:fig:lowjavamem2','Java WAS …Run Code Online (Sandbox Code Playgroud) 我从Java编译器收到一条我不明白的错误消息.我在OSX 10.6,10.9和Ubuntu 14.04上使用Java 6和7测试了我的代码.当我使用Eclipse调试器或解释器(使用-Xint选项)运行时,一切运行正常.否则,我收到以下消息:
Java 1.6:
Invalid memory access of location 0x8 rip=0x1024e9660
Run Code Online (Sandbox Code Playgroud)
Java 1.7:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x000000010f7a8262, pid=20344, tid=18179
#
# JRE version: Java(TM) SE Runtime Environment (7.0_60-b19) (build 1.7.0_60-b19)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.60-b09 mixed mode bsd-amd64 compressed oops)
# Problematic frame:
# V [libjvm.dylib+0x3a8262] PhaseIdealLoop::idom_no_update(Node*) const+0x12
#
# Failed to write core dump. Core dumps have been …Run Code Online (Sandbox Code Playgroud) 如果我使用JDK1.8_40或更新版本(Oracle或OpenJDK执行相同操作),以下代码和对话框调整大小将使应用程序崩溃(尝试过Windows 7,x64,64位JDK)
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JWindow;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final JDialog dialog = new JDialog();
dialog.add(new JPanel());
dialog.setVisible(true);
dialog.setBounds(100, 100, 100, 100);
final JWindow dependentWindow = getjWindow(dialog);
dependentWindow.setVisible(true);
dependentWindow.setBounds(100, 100, 100, 100);
Timer t = new Timer(300, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dependentWindow.setVisible(!dependentWindow.isVisible());
}
});
t.start();
}
});
} …Run Code Online (Sandbox Code Playgroud) 我的JVM崩溃了,并且hs_err文件显示它在尝试加载类时崩溃了.特别是在尝试memcpy时([libc.so.6 + 0x6aa2c] memcpy + 0x1c).我查看了.class文件,并确定了正在加载的类.
但是,任何人都可以告诉我是什么原因造成的,或者我如何能够更多地了解原因?如果JVM内存不足则不会引发错误.非常感谢任何见解.
我已经从我的hs_err文件中摘录了一段摘录.
#
# An unexpected error has been detected by Java Runtime Environment:
#
# SIGBUS (0x7) at pc=0x005aba2c, pid=20841, tid=2427227056
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0_02-b05 mixed mode)
# Problematic frame:
# C [libc.so.6+0x6aa2c] memcpy+0x1c
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
--------------- T H R E A D ---------------
Current thread (0x90d0dc00): JavaThread "ORDERHANDLER" [_thread_in_native, id=20881]
siginfo:si_signo=7, si_errno=0, si_code=2, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用jre 10.0.1 64位启动服务器.Windows启动批处理文件中的JVM设置有明显变化.通过设置-XX:+UseParNewGC 作为错误的参考点,为了使JVM服务器从java 10开始,而不是我已经显示的java 8设置,需要将其更改为什么?
导致错误引用的代码行是:
set JAVA_PARAMETERS=-XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:+CMSClassUnloadingEnabled -XX:ParallelGCThreads=2 -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10
Run Code Online (Sandbox Code Playgroud) jvm-crash ×10
java ×8
jvm ×6
java-8 ×2
jvm-hotspot ×2
crash ×1
fatal-error ×1
heap-memory ×1
java-10 ×1
jwindow ×1
matlab ×1
scala ×1
swing ×1