一旦 Java Swing 应用程序从 Java 6 32 位移动到 Java 7 32 位更新 11,我们就会面临性能问题。有人可以提供一些线索吗?
该应用程序使用 Java Web-start 技术,服务器是 Tomcat 7。客户端应用程序正在消耗 1GB 内存,因此屏幕冻结。
我们正在交换序列化对象,以下是代码:
Object object = connection.sendCommand(command); // exchanging serialized object
public class ConnectionImpl implements Connection {
public Object sendCommand(Command command) throws Exception {
URL url = new URL(System.getProperty("serverUrl"));
URLConnection connection = url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
oos = new ObjectOutputStream(new BufferedOutputStream(connection
.getOutputStream()));
oos.writeObject(command);
oos.flush();
InputStream inputStream = connection.getInputStream();
ZipInputStream zip = new ZipInputStream(inputStream);
if (zip.getNextEntry() != null) {
ois = new ObjectInputStream(zip);
object = ois.readObject();
}
zip.close();
}
}
// The serialized class
public class CommandImpl implements Command, Serializable {
private String serviceName;
private String methodName;
private Map<String, Object> parameterMap;
// followed by getter & setters
}
- 客户端机器: Windows 7 32 位,Java 7 更新 11 32 位
- 服务器机器: Windows 64 位 2008 R2 Enterprise Server,Java 7 更新 11 64 位
代码没有变化,只是更新了 JVM。
我使用 Java VisualVM 为 JDK 1.6 和 JDK 1.7 拍摄了内存快照,以下是包含快照的 rar 文件的链接:
使用 Java VisualVM 的内存快照 使用 Java VisualVM 的堆转储
NetBeans IDE 提供了将代码从 Java 6 迁移到 Java 7 的选项。以下是与此相关的链接:
https://netbeans.org/kb/docs/java/editor-inspect-transform.html#convert
将整个源代码从 Java 6 迁移到 Java 7 没有任何问题是一个不错的选择吗?或者有人觉得这可能会产生一些问题?如果我们这样做,我们是否可以在某种程度上解决这个性能问题?