如何在java OutOfMemoryError或stackoverflow生产时识别问题.由于这个原因它即将到来或为什么服务器停机.
例如,我正在开发一个生活在生产和UAT上的应用程序.即时生产java OutOfMemoryError或stackoverflow.
那么我们如何才能跟踪这个问题呢?是否有任何技术可以告诉我这是发生了哪些代码流?
请解释一下.我多次遇到过这个问题.
我创建了一个在 SWT 中设置图像的按钮。我想删除按钮的边框。所以它看起来像一个标签。请帮助任何人。
下面的代码片段:
breakNodeButton = new Button(this, SWT.TRANSPARENT);
breakNodeButton.setBackground(new Color(getDisplay(), 204, 204, 204));
Image breakNodeLabelImg = ...
breakNodeButton.setImage(breakNodeLabelImg);
Run Code Online (Sandbox Code Playgroud) 如果同一类的两个对象在 Java 中具有相同的 hashCode,那么它们将如何存储在HashMap/ 中HashTable?哈希码和内存地址的实际架构是什么。hashCode 驻留在内存中的什么位置?
例子:有一个类A。创建对象时a1,a2它们将代表一些内存地址,但我每次都覆盖了哈希码。当我阅读一篇文章时,我发现 hashcode 函数从内存地址生成一个 hashcode。这意味着如果哈希码相同,内存地址将相同。请解开我的疑惑。
public class A {
@Override
public int hashCode() {
return 1;
}
public static void main(String args[]) {
A a1 = new A();
A a2 = new A();
System.out.println(a1.hashCode());
System.out.println(a2.hashCode());
}
}
Run Code Online (Sandbox Code Playgroud) 示例下面的程序,其中在try块中调用了defectedCode()方法,那么为什么只输出只显示C带有"线程中的异常"主"java.lang.Error".
public class ExceptionTest {
public static void defectedCode(){
throw new Error();
}
public static void main(String args[]){
try{
defectedCode();
System.out.println("A");
}catch(Exception e){
System.out.println("B");
}finally{
System.out.println("C");
}
System.out.print("D");
}
}
Run Code Online (Sandbox Code Playgroud)
Exception in thread "main" java.lang.Error
C
at ExceptionTest.defectedCode(ExceptionTest.java:15)
at ExceptionTest.main(ExceptionTest.java:21)
Java Result: 1
Run Code Online (Sandbox Code Playgroud)