我想使用 SQLDeveloper 处理相当大的文件。但是,由于内存不足,性能(最好的情况下)很差。
假设它是一个 Java 应用程序,我如何增加分配给 VM 的内存大小?
答案1
添加
AddVMOption -Xmx1024M
AddVMOption -Xms512M
只 sqldeveloper/ide/bin/ide.conf可能不起作用。也不推荐这样做(请参阅 sqldeveloper\ide\bin\ide.conf 文件顶部的注释)。在较新版本的 SQL Developer 中(肯定是 4.x 版本之后),可以覆盖 sqldeveloper/ide/bin/ide.conf 中的设置
视窗:
C:\Users\${WINDOWS_USER_NAME}\AppData\Roaming\sqldeveloper\${SQL_DEVELOPER_VERSION}\product.conf
Linux:
/home/${USER_NAME}/.sqldeveloper/${SQL_DEVELOPER_VERSION}/product.conf
笔记:您可以在 SQLDeveloper->帮助->关于->属性->属性名称“user.conf”中找到 product.conf 文件的路径
你需要改变
AddVMOption -Xmx1024M
AddVMOption -Xms512M
在上面的配置文件中。
答案2
编辑sqldeveloper/ide/bin/ide.conf
文件并更改以下两行:
#
# If you are getting the 'Low Memory Warning' Message Dialog while running
# JDeveloper, please increase the -Xmx value below from the default 768M to
# something greater, like 1024M or 1250M. If after increasing the value,
# JDeveloper is no longer starting up because it fails to create a virtual
# machine, then please reduce the modified -Xmx value.
#
AddVMOption -Xmx1024M
AddVMOption -Xms512M
-XX:MaxPermSize
关于使用in的其他答案sqldeveloper/bin/sqldeveloper.conf
已经过时,在最新版本的 sqldeveloper 中不起作用。使用该答案会导致在启动时出现以下 sqldeveloper 消息:
Java HotSpot(TM) 64 位服务器 VM 警告:忽略选项 MaxPermSize=1024M;8.0 中已取消支持
答案3
这个帖子包含有关在何处调整 JVM 设置的有用详细信息。
本质上,查找 ~/sqldeveloper/bin/sqldeveloper.conf 并在其中查找:
AddVMOption -XX:MaxPermSize=128M
答案4
导致此问题的另一个原因
我发现了 SQL Developer 限制最大分配内存的另一个原因,而这在现有的答案中没有描述。
我在使用 SQL Developer 时遇到了这个问题:
- 在具有 32GB RAM 的 Windows 10 计算机上
- 使用当时最新版本的 SQL Developer(23.1.1)
- 使用上一版本和再上一版本
- 将 product.conf Xmx 更改为许多不同的数字后(在:[本地用户 AppData 路径]/Roaming/sqldeveloper/23.1.1(和 22.2.1 等...)
- 在 [sql developer executable 的路径]/sqldeveloper/sqldeveloper 中更改了 jdk.conf 以及 ide.conf(与可执行文件位于同一位置)之后
我花了几个小时尝试不同的内存值和表示方法(从千字节到兆字节再到千兆字节,使用上限和下限,设置非常低的 Xss 设置,然后设置更高的 Xmx 设置)。
我甚至将上述值与我知道是错误的垃圾混杂在一起,以便我可以验证文件是否正在被读取。
关键是,所有标准位置记录的内容都没有起作用。
修复
事实证明,有一个环境变量集胜过所有其他设置。
_JAVA_OPTIONS -Xmx512M
我修改了上述内容,最终,SQL Developer 的最大内存分配大小大于 512M。以前,它始终设置为该值,无论 .conf 中设置了什么。
最终修复
执行以下操作之一:
- 删除环境变量(确保 .conf 文件设置正确)
- 将环境变量更改为更大的值(测试时我尝试了 2048M...因为原始值是 512M...