我有从JVM OutOfMemory(JDK 1.5版本)生成的.hprof堆转储.
当我尝试在VisualVM中添加此文件时,它告诉我文件不是有效的核心转储.
但是从我能够运行jhat这个转储文件没有任何问题.
任何想法为什么?
我的 java 项目中有数千个类。其中一些实现了可序列化接口。现在有一个问题。有人可能可以进入一个类,添加既不是瞬态也不是可序列化的新变量。代码编译得很好,但进程会在运行时崩溃。
为了说明这一点
class Foo implements Serializable { .... // all good }
class Foo implements Serializable
{
// OOps, executorService is not serializable. It's not declared as transient either
private ExecutorService executorService = ..
}
Run Code Online (Sandbox Code Playgroud)
我正在考虑编写一个单元测试来遍历所有类并确保“真正的可串行化”。我读过一些有关序列化特定对象的讨论。我理解这个过程,但它需要
1)创建一个对象。
2)序列化,然后
3)反序列化。
有没有更高效、实用的方法。也许要使用反射。遍历所有类,如果类具有可序列化,则所有属性都必须可序列化或具有瞬态关键字。
想法?