Android Studio 无法在 OpenSUSE 上启动(打开的文件太多)
Android Studio won't start on OpenSUSE (too many files open)
我已经有一段时间没有在 Whosebug 上发帖了,如果我把它放在错误的地方请原谅我,但问题是:
我最近为我相对较新安装的 OpenSUSE 系统下载了 Android Studio,安装了 openjdk-devel,每当我尝试启动时 studio.sh 启动画面出现,大约 70%通过加载的方式,然后向控制台发送垃圾邮件:
[ 7146] ERROR - j.util.io.ResizeableMappedFile - /home/user/.AndroidStudio1.3/system/caches/names.dat.len (Too many open files)
java.io.FileNotFoundException: /home/user/.AndroidStudio1.3/system/caches/names.dat.len (Too many open files)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
at java.io.FileOutputStream.<init>(FileOutputStream.java:171)
at com.intellij.util.io.ResizeableMappedFile.execute(ResizeableMappedFile.java:119)
at com.intellij.util.io.ResizeableMappedFile.execute(ResizeableMappedFile.java:114)
at com.intellij.openapi.util.io.FileUtilRt.doIOOperation(FileUtilRt.java:700)
at com.intellij.util.io.ResizeableMappedFile.writeLength(ResizeableMappedFile.java:114)
at com.intellij.util.io.ResizeableMappedFile.readLength(ResizeableMappedFile.java:164)
at com.intellij.util.io.ResizeableMappedFile.<init>(ResizeableMappedFile.java:55)
at com.intellij.util.io.PersistentBTreeEnumerator.<init>(PersistentBTreeEnumerator.java:82)
at com.intellij.util.io.PersistentEnumeratorDelegate.<init>(PersistentEnumeratorDelegate.java:38)
at com.intellij.util.io.PersistentStringEnumerator.<init>(PersistentStringEnumerator.java:53)
at com.intellij.util.io.PersistentStringEnumerator.<init>(PersistentStringEnumerator.java:46)
at com.intellij.util.io.PersistentStringEnumerator.<init>(PersistentStringEnumerator.java:32)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:244)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:319)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:319)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:319)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:319)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:319)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:319)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:319)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:319)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:319)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.connect(FSRecords.java:160)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords.connect(FSRecords.java:518)
at com.intellij.openapi.vfs.newvfs.persistent.PersistentFSImpl.initComponent(PersistentFSImpl.java:89)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:568)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:610)
at com.intellij.util.pico.DefaultPicoContainer.getLocalInstance(DefaultPicoContainer.java:245)
at com.intellij.util.pico.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:211)
at org.picocontainer.defaults.BasicComponentParameter.resolveInstance(BasicComponentParameter.java:77)
at org.picocontainer.defaults.ComponentParameter.resolveInstance(ComponentParameter.java:114)
at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getConstructorArguments(ConstructorInjectionComponentAdapter.java:257)
at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.run(ConstructorInjectionComponentAdapter.java:217)
at org.picocontainer.defaults.ThreadLocalCyclicDependencyGuard.observe(ThreadLocalCyclicDependencyGuard.java:53)
at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getComponentInstance(ConstructorInjectionComponentAdapter.java:248)
at com.intellij.util.pico.ConstructorInjectionComponentAdapter.getComponentInstance(ConstructorInjectionComponentAdapter.java:58)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:550)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:610)
at com.intellij.util.pico.DefaultPicoContainer.getLocalInstance(DefaultPicoContainer.java:245)
at com.intellij.util.pico.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:211)
at org.picocontainer.defaults.CollectionComponentParameter.getArrayInstance(CollectionComponentParameter.java:268)
at org.picocontainer.defaults.CollectionComponentParameter.resolveInstance(CollectionComponentParameter.java:127)
at org.picocontainer.defaults.ComponentParameter.resolveInstance(ComponentParameter.java:116)
at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getConstructorArguments(ConstructorInjectionComponentAdapter.java:257)
at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.run(ConstructorInjectionComponentAdapter.java:217)
at org.picocontainer.defaults.ThreadLocalCyclicDependencyGuard.observe(ThreadLocalCyclicDependencyGuard.java:53)
at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getComponentInstance(ConstructorInjectionComponentAdapter.java:248)
at com.intellij.util.pico.ConstructorInjectionComponentAdapter.getComponentInstance(ConstructorInjectionComponentAdapter.java:58)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:550)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:610)
at com.intellij.util.pico.DefaultPicoContainer.getLocalInstance(DefaultPicoContainer.java:245)
at com.intellij.util.pico.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:211)
at com.intellij.openapi.components.impl.ComponentManagerImpl.getComponentFromContainer(ComponentManagerImpl.java:168)
at com.intellij.openapi.application.impl.ApplicationImpl.getComponentFromContainer(ApplicationImpl.java:533)
at com.intellij.openapi.components.impl.ComponentManagerImpl.getComponent(ComponentManagerImpl.java:199)
at com.intellij.openapi.components.impl.ComponentManagerImpl.getComponent(ComponentManagerImpl.java:194)
at com.intellij.openapi.vfs.VirtualFileManager.getInstance(VirtualFileManager.java:44)
at com.intellij.openapi.vfs.LocalFileSystem$LocalFileSystemHolder.<clinit>(LocalFileSystem.java:40)
at com.intellij.openapi.vfs.LocalFileSystem.getInstance(LocalFileSystem.java:44)
at com.intellij.openapi.components.impl.stores.ApplicationStoreImpl.beforeFileBasedStorageCreate(ApplicationStoreImpl.java:85)
at com.intellij.openapi.components.impl.stores.StateStorageManagerImpl.createFileStateStorage(StateStorageManagerImpl.java:212)
at com.intellij.openapi.components.impl.stores.StateStorageManagerImpl.createStateStorage(StateStorageManagerImpl.java:185)
at com.intellij.openapi.components.impl.stores.StateStorageManagerImpl.getStateStorage(StateStorageManagerImpl.java:102)
at com.intellij.openapi.components.impl.stores.ComponentStoreImpl.initPersistentComponent(ComponentStoreImpl.java:315)
at com.intellij.openapi.components.impl.stores.ComponentStoreImpl.initComponent(ComponentStoreImpl.java:75)
at com.intellij.openapi.application.impl.ApplicationImpl.initializeComponent(ApplicationImpl.java:177)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:566)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:610)
at com.intellij.util.pico.DefaultPicoContainer.getLocalInstance(DefaultPicoContainer.java:245)
at com.intellij.util.pico.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:211)
at com.intellij.openapi.components.impl.ComponentManagerImpl.createComponent(ComponentManagerImpl.java:125)
at com.intellij.openapi.application.impl.ApplicationImpl.createComponent(ApplicationImpl.java:354)
at com.intellij.openapi.components.impl.ComponentManagerImpl.createComponents(ComponentManagerImpl.java:116)
at com.intellij.openapi.components.impl.ComponentManagerImpl.init(ComponentManagerImpl.java:87)
at com.intellij.openapi.components.impl.stores.ApplicationStoreImpl.load(ApplicationStoreImpl.java:101)
at com.intellij.openapi.application.impl.ApplicationImpl.load(ApplicationImpl.java:499)
at com.intellij.openapi.application.impl.ApplicationImpl.load(ApplicationImpl.java:481)
at com.intellij.idea.IdeaApplication.run(IdeaApplication.java:170)
at com.intellij.idea.MainImpl.run(MainImpl.java:52)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:745)
at java.awt.EventQueue.access0(EventQueue.java:103)
at java.awt.EventQueue.run(EventQueue.java:706)
at java.awt.EventQueue.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:715)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:362)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
[ 7150] ERROR - j.util.io.ResizeableMappedFile - Android Studio 1.3.1 Build #AI-141.2135290
[ 7151] ERROR - j.util.io.ResizeableMappedFile - JDK: 1.7.0_85
[ 7151] ERROR - j.util.io.ResizeableMappedFile - VM: OpenJDK Server VM
[ 7151] ERROR - j.util.io.ResizeableMappedFile - Vendor: Oracle Corporation
[ 7151] ERROR - j.util.io.ResizeableMappedFile - OS: Linux
我在这里有点不知所措。我试过链接到 openjdk 以及 Oracle 的最新 JDK 版本。我试过使用最大打开文件数(在 /etc/environment/limits.conf 中设置),但尽管错误指示大量打开文件,但这似乎没有任何作用。我已经尝试升级到 openjdk1.8,降级到 1.7,多次重新安装所有内容,但我似乎无法启动它。
这是合法的错误还是严重的用户错误?关于我可以在哪里解决这个问题的任何想法?
编辑:
/etc/environment/limits.conf
# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
#
#Where:
#<domain> can be:
# - a user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
# - the wildcard %, can be also used with %group syntax,
# for maxlogin limit
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open files
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit (KB)
# - maxlogins - max number of logins for this user
# - maxsyslogins - max number of logins on the system
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19]
# - rtprio - max realtime priority
#
#<domain> <type> <item> <value>
#
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
* hard nofile 65535
* soft nofile 65535
root soft nofile 65535
root hard nofile 65535
# End of file
uname -a
Linux susebart 3.16.7-21-desktop #1 SMP PREEMPT Tue Apr 14 07:11:37 UTC 2015 (93c1539) i686 i686 i386 GNU/Linux
猫/proc/version
Linux version 3.16.7-21-desktop (geeko@buildhost) (gcc version 4.8.3 20140627 [gcc-4_8-branch revision 212064] (SUSE Linux) ) #1 SMP PREEMPT Tue Apr 14 07:11:37 UTC 2015 (93c1539)
这是 shell 的一些神秘输出:
$ whoami
corey
$ ulimit -Hn
256
$ ulimit -Sn
256
$ su
$ whoami
root
$ ulimit -Hn
65535
$ ulimit -Sn
65535
$ su corey
$ whoami
corey
$ ulimit -Hn
65535
$ ulimit -Sn
65535
$ exit
$ exit // getting back to login shell
$ whoami
corey
$ ulimit -Hn
256
$ ulimit -Sn
256
因此,当打开一个新的 shell 时,限制似乎已正确更改(即使在上面的嵌套 su 的情况下没有先切换到 root),但在机器启动或新的时候没有shell 已打开。我通过 运行 su USERNAME ./studio.sh 确认我终于能够启动该程序,所以至少这是一种解决方法。不过,知道 shell 实例发生了什么吗?
目前情况是这样的:
$ whoami //session 1 (256)
corey
$ ulimit -Hn
256
$ ulimit -Sn
256
$ su //session 2 (65k)
$ whoami
root
$ ulimit -Hn
65535
$ ulimit -Sn
65535
$ su corey //session 3 (65k)
$ whoami
corey
$ ulimit -Hn
65535
$ ulimit -Sn
65535
$ exit //session 2(65k)
$ exit // getting back to login shell: session 1 (256)
$ whoami
corey
$ ulimit -Hn
256
$ ulimit -Sn
256
su
命令可以更改登录会话的所有者(即最初通过登录系统创建该会话的用户)无需所有者必须先退出该会话。
因此,当您注销 2 次(从 root 和 corey 会话)时,您 return 到您的旧限制似乎有效的初始会话。我不知道如果你正确地重新启动系统会怎样,所以我只是建议你在 corey
下 relogin(意思是明确注销并登录),我打赌是新的limits.conf
中的值应该最终适用。
我已经有一段时间没有在 Whosebug 上发帖了,如果我把它放在错误的地方请原谅我,但问题是:
我最近为我相对较新安装的 OpenSUSE 系统下载了 Android Studio,安装了 openjdk-devel,每当我尝试启动时 studio.sh 启动画面出现,大约 70%通过加载的方式,然后向控制台发送垃圾邮件:
[ 7146] ERROR - j.util.io.ResizeableMappedFile - /home/user/.AndroidStudio1.3/system/caches/names.dat.len (Too many open files)
java.io.FileNotFoundException: /home/user/.AndroidStudio1.3/system/caches/names.dat.len (Too many open files)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
at java.io.FileOutputStream.<init>(FileOutputStream.java:171)
at com.intellij.util.io.ResizeableMappedFile.execute(ResizeableMappedFile.java:119)
at com.intellij.util.io.ResizeableMappedFile.execute(ResizeableMappedFile.java:114)
at com.intellij.openapi.util.io.FileUtilRt.doIOOperation(FileUtilRt.java:700)
at com.intellij.util.io.ResizeableMappedFile.writeLength(ResizeableMappedFile.java:114)
at com.intellij.util.io.ResizeableMappedFile.readLength(ResizeableMappedFile.java:164)
at com.intellij.util.io.ResizeableMappedFile.<init>(ResizeableMappedFile.java:55)
at com.intellij.util.io.PersistentBTreeEnumerator.<init>(PersistentBTreeEnumerator.java:82)
at com.intellij.util.io.PersistentEnumeratorDelegate.<init>(PersistentEnumeratorDelegate.java:38)
at com.intellij.util.io.PersistentStringEnumerator.<init>(PersistentStringEnumerator.java:53)
at com.intellij.util.io.PersistentStringEnumerator.<init>(PersistentStringEnumerator.java:46)
at com.intellij.util.io.PersistentStringEnumerator.<init>(PersistentStringEnumerator.java:32)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:244)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:319)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:319)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:319)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:319)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:319)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:319)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:319)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:319)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.init(FSRecords.java:319)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords$DbConnection.connect(FSRecords.java:160)
at com.intellij.openapi.vfs.newvfs.persistent.FSRecords.connect(FSRecords.java:518)
at com.intellij.openapi.vfs.newvfs.persistent.PersistentFSImpl.initComponent(PersistentFSImpl.java:89)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:568)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:610)
at com.intellij.util.pico.DefaultPicoContainer.getLocalInstance(DefaultPicoContainer.java:245)
at com.intellij.util.pico.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:211)
at org.picocontainer.defaults.BasicComponentParameter.resolveInstance(BasicComponentParameter.java:77)
at org.picocontainer.defaults.ComponentParameter.resolveInstance(ComponentParameter.java:114)
at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getConstructorArguments(ConstructorInjectionComponentAdapter.java:257)
at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.run(ConstructorInjectionComponentAdapter.java:217)
at org.picocontainer.defaults.ThreadLocalCyclicDependencyGuard.observe(ThreadLocalCyclicDependencyGuard.java:53)
at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getComponentInstance(ConstructorInjectionComponentAdapter.java:248)
at com.intellij.util.pico.ConstructorInjectionComponentAdapter.getComponentInstance(ConstructorInjectionComponentAdapter.java:58)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:550)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:610)
at com.intellij.util.pico.DefaultPicoContainer.getLocalInstance(DefaultPicoContainer.java:245)
at com.intellij.util.pico.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:211)
at org.picocontainer.defaults.CollectionComponentParameter.getArrayInstance(CollectionComponentParameter.java:268)
at org.picocontainer.defaults.CollectionComponentParameter.resolveInstance(CollectionComponentParameter.java:127)
at org.picocontainer.defaults.ComponentParameter.resolveInstance(ComponentParameter.java:116)
at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getConstructorArguments(ConstructorInjectionComponentAdapter.java:257)
at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.run(ConstructorInjectionComponentAdapter.java:217)
at org.picocontainer.defaults.ThreadLocalCyclicDependencyGuard.observe(ThreadLocalCyclicDependencyGuard.java:53)
at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getComponentInstance(ConstructorInjectionComponentAdapter.java:248)
at com.intellij.util.pico.ConstructorInjectionComponentAdapter.getComponentInstance(ConstructorInjectionComponentAdapter.java:58)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:550)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:610)
at com.intellij.util.pico.DefaultPicoContainer.getLocalInstance(DefaultPicoContainer.java:245)
at com.intellij.util.pico.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:211)
at com.intellij.openapi.components.impl.ComponentManagerImpl.getComponentFromContainer(ComponentManagerImpl.java:168)
at com.intellij.openapi.application.impl.ApplicationImpl.getComponentFromContainer(ApplicationImpl.java:533)
at com.intellij.openapi.components.impl.ComponentManagerImpl.getComponent(ComponentManagerImpl.java:199)
at com.intellij.openapi.components.impl.ComponentManagerImpl.getComponent(ComponentManagerImpl.java:194)
at com.intellij.openapi.vfs.VirtualFileManager.getInstance(VirtualFileManager.java:44)
at com.intellij.openapi.vfs.LocalFileSystem$LocalFileSystemHolder.<clinit>(LocalFileSystem.java:40)
at com.intellij.openapi.vfs.LocalFileSystem.getInstance(LocalFileSystem.java:44)
at com.intellij.openapi.components.impl.stores.ApplicationStoreImpl.beforeFileBasedStorageCreate(ApplicationStoreImpl.java:85)
at com.intellij.openapi.components.impl.stores.StateStorageManagerImpl.createFileStateStorage(StateStorageManagerImpl.java:212)
at com.intellij.openapi.components.impl.stores.StateStorageManagerImpl.createStateStorage(StateStorageManagerImpl.java:185)
at com.intellij.openapi.components.impl.stores.StateStorageManagerImpl.getStateStorage(StateStorageManagerImpl.java:102)
at com.intellij.openapi.components.impl.stores.ComponentStoreImpl.initPersistentComponent(ComponentStoreImpl.java:315)
at com.intellij.openapi.components.impl.stores.ComponentStoreImpl.initComponent(ComponentStoreImpl.java:75)
at com.intellij.openapi.application.impl.ApplicationImpl.initializeComponent(ApplicationImpl.java:177)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:566)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:610)
at com.intellij.util.pico.DefaultPicoContainer.getLocalInstance(DefaultPicoContainer.java:245)
at com.intellij.util.pico.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:211)
at com.intellij.openapi.components.impl.ComponentManagerImpl.createComponent(ComponentManagerImpl.java:125)
at com.intellij.openapi.application.impl.ApplicationImpl.createComponent(ApplicationImpl.java:354)
at com.intellij.openapi.components.impl.ComponentManagerImpl.createComponents(ComponentManagerImpl.java:116)
at com.intellij.openapi.components.impl.ComponentManagerImpl.init(ComponentManagerImpl.java:87)
at com.intellij.openapi.components.impl.stores.ApplicationStoreImpl.load(ApplicationStoreImpl.java:101)
at com.intellij.openapi.application.impl.ApplicationImpl.load(ApplicationImpl.java:499)
at com.intellij.openapi.application.impl.ApplicationImpl.load(ApplicationImpl.java:481)
at com.intellij.idea.IdeaApplication.run(IdeaApplication.java:170)
at com.intellij.idea.MainImpl.run(MainImpl.java:52)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:745)
at java.awt.EventQueue.access0(EventQueue.java:103)
at java.awt.EventQueue.run(EventQueue.java:706)
at java.awt.EventQueue.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:715)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:362)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
[ 7150] ERROR - j.util.io.ResizeableMappedFile - Android Studio 1.3.1 Build #AI-141.2135290
[ 7151] ERROR - j.util.io.ResizeableMappedFile - JDK: 1.7.0_85
[ 7151] ERROR - j.util.io.ResizeableMappedFile - VM: OpenJDK Server VM
[ 7151] ERROR - j.util.io.ResizeableMappedFile - Vendor: Oracle Corporation
[ 7151] ERROR - j.util.io.ResizeableMappedFile - OS: Linux
我在这里有点不知所措。我试过链接到 openjdk 以及 Oracle 的最新 JDK 版本。我试过使用最大打开文件数(在 /etc/environment/limits.conf 中设置),但尽管错误指示大量打开文件,但这似乎没有任何作用。我已经尝试升级到 openjdk1.8,降级到 1.7,多次重新安装所有内容,但我似乎无法启动它。
这是合法的错误还是严重的用户错误?关于我可以在哪里解决这个问题的任何想法?
编辑: /etc/environment/limits.conf
# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
#
#Where:
#<domain> can be:
# - a user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
# - the wildcard %, can be also used with %group syntax,
# for maxlogin limit
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open files
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit (KB)
# - maxlogins - max number of logins for this user
# - maxsyslogins - max number of logins on the system
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19]
# - rtprio - max realtime priority
#
#<domain> <type> <item> <value>
#
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
* hard nofile 65535
* soft nofile 65535
root soft nofile 65535
root hard nofile 65535
# End of file
uname -a
Linux susebart 3.16.7-21-desktop #1 SMP PREEMPT Tue Apr 14 07:11:37 UTC 2015 (93c1539) i686 i686 i386 GNU/Linux
猫/proc/version
Linux version 3.16.7-21-desktop (geeko@buildhost) (gcc version 4.8.3 20140627 [gcc-4_8-branch revision 212064] (SUSE Linux) ) #1 SMP PREEMPT Tue Apr 14 07:11:37 UTC 2015 (93c1539)
这是 shell 的一些神秘输出:
$ whoami
corey
$ ulimit -Hn
256
$ ulimit -Sn
256
$ su
$ whoami
root
$ ulimit -Hn
65535
$ ulimit -Sn
65535
$ su corey
$ whoami
corey
$ ulimit -Hn
65535
$ ulimit -Sn
65535
$ exit
$ exit // getting back to login shell
$ whoami
corey
$ ulimit -Hn
256
$ ulimit -Sn
256
因此,当打开一个新的 shell 时,限制似乎已正确更改(即使在上面的嵌套 su 的情况下没有先切换到 root),但在机器启动或新的时候没有shell 已打开。我通过 运行 su USERNAME ./studio.sh 确认我终于能够启动该程序,所以至少这是一种解决方法。不过,知道 shell 实例发生了什么吗?
目前情况是这样的:
$ whoami //session 1 (256)
corey
$ ulimit -Hn
256
$ ulimit -Sn
256
$ su //session 2 (65k)
$ whoami
root
$ ulimit -Hn
65535
$ ulimit -Sn
65535
$ su corey //session 3 (65k)
$ whoami
corey
$ ulimit -Hn
65535
$ ulimit -Sn
65535
$ exit //session 2(65k)
$ exit // getting back to login shell: session 1 (256)
$ whoami
corey
$ ulimit -Hn
256
$ ulimit -Sn
256
su
命令可以更改登录会话的所有者(即最初通过登录系统创建该会话的用户)无需所有者必须先退出该会话。
因此,当您注销 2 次(从 root 和 corey 会话)时,您 return 到您的旧限制似乎有效的初始会话。我不知道如果你正确地重新启动系统会怎样,所以我只是建议你在 corey
下 relogin(意思是明确注销并登录),我打赌是新的limits.conf
中的值应该最终适用。