现在我面临的问题是无法使用 Ubuntu 15.10 在 AndroidStudio 中进行开发,因为 openjdk-7 和 openjdk-8 都会导致问题。
openjdk-7 问题
使用运行AndroidStudioenv STUDIO_JDK=/usr/lib/jvm/java-7-openjdk-amd64 /opt/android-studio/bin/studio.sh
导致 Xorg 的 VIRT 列top
跳转到 25.1G,而我的内存使用情况似乎还可以(使用了 8 GB 中的 3.5 GB)。
然而,这会导致 git-cola 崩溃:
$ git-cola
QNativeImage: Unable to attach to shared memory segment.
(python:13321): Gdk-WARNING **: shmget failed: error 28 (No space left on device)
X Error: BadDrawable (invalid Pixmap or Window parameter) 9
Major opcode: 62 (X_CopyArea)
Resource id: 0x0
X Error: BadDrawable (invalid Pixmap or Window parameter) 9
Major opcode: 62 (X_CopyArea)
Resource id: 0x0
X Error: BadDrawable (invalid Pixmap or Window parameter) 9
Major opcode: 62 (X_CopyArea)
Resource id: 0x0
[...]
造成这样的视觉体验:
Arch 的人说这是一个与 openjdk-7 相关的内存泄漏:https://bbs.archlinux.org/viewtopic.php?id=201488
openjdk-8 问题
当使用 openjdk-8 ( env STUDIO_JDK=/usr/lib/jvm/java-8-openjdk-amd64 /opt/android-studio/bin/studio.sh
) 启动 AndroidStudio 时,没有程序的VIRT
列超过 5GB。
但是 AndroidStudio 在一段时间后会崩溃(通常是在以 XML 或 Java 形式显示自动完成列表时)。
上次崩溃的原因是
(java:14046): GLib-GObject-WARNING **: /build/glib2.0-ajuDY6/glib2.0-2.46.1/./gobject/gsignal.c:3484: signal name 'bounds_changed' is invalid for instance '0x7fd32c1f01c0' of type 'JawImpl_0'
(java:14046): GLib-GObject-WARNING **: /build/glib2.0-ajuDY6/glib2.0-2.46.1/./gobject/gsignal.c:3484: signal name 'bounds_changed' is invalid for instance '0x7fd32c1f01c0' of type 'JawImpl_0'
(java:14046): GLib-GObject-WARNING **: /build/glib2.0-ajuDY6/glib2.0-2.46.1/./gobject/gsignal.c:3484: signal name 'bounds_changed' is invalid for instance '0x7fd32c1f01c0' of type 'JawImpl_0'
Okt 29, 2015 9:29:20 PM com.android.tools.idea.monitor.network.NetworkSampler checkStatsFile
WARNUNG: IOException null in ls /proc/net/xt_qtaguid/stats
- AndroidStudio 版本:1.4.0 和 1.4.1(测试版)
- OpenJDK8 版本:1.8.0_66-internal
- OpenJDK7版本:1.7.0_85
我使用 openjdk-8 运行 AndroidStudio,使用 Ubutnu 15.04 没有任何问题。
有想法吗?
答案1
我不得不使用 Oracle Java 8(正如@wilf 所建议的那样),它现在运行良好。
- 从 oracle.com 下载并安装到
/opt/java8-oracle
- 通过启动Android Studio
env STUDIO_JDK=/opt/java8-oracle /opt/android-studio/bin/studio.sh