Java Swing アプリケーションが Java 6 32 ビットから Java 7 32 ビット update 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 update 11 32 ビット
- サーバー マシン: Windows 64 ビット 2008 R2 Enterprise Server、Java 7 update 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 に問題なく移行するための適切なオプションでしょうか? または、誰かが問題を引き起こす可能性があると感じていますか? そうすれば、このパフォーマンスの問題をある程度まで解決できるでしょうか?