xmind文件大,导致运行缓慢且无法保存 您所在的位置:网站首页 ipad版xmind文件消失了名字显示被占用 xmind文件大,导致运行缓慢且无法保存

xmind文件大,导致运行缓慢且无法保存

2023-09-17 03:07| 来源: 网络整理| 查看: 265

我的一个xmind文件体积十分大.如下: 

在打开此文件后,对它编辑时,出现以下问题: 

1. 编辑十分的慢,表现在选定一个编辑框后,要输入文字十分困难,卡顿. 

2. 保存文件慢,而且会出现保存时内存溢出的问题. 

用任务管理器查看此xmind进程占用了接近1G的内存.  考虑是软件内存配置的问题。 

到xmind的安装目录中查看配置文件 ,发现xmind是用java语言开发的软件,它的配置文件 xmind.ini中有关于虚拟机内存配置的选项. 

 

xmind.ini它的配置项中 原配置如下: 

-Xms128m -Xmx256m

以上两个值的意思: 

1、-Xms :表示java虚拟机堆区内存初始内存分配的大小,通常为操作系统可用内存的1/64大小即可,但仍需按照实际情况进行分配。 2、-Xmx: 表示java虚拟机堆区内存可被分配的最大上限,通常为操作系统可用内存的1/4大小。但是开发过程中,通常会将 -Xms 与 -Xmx两个参数的配置相同的值,其目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源, 防止内存抖动.

估计这个值太小了,一个xmind文件就要占用 120m.所以决定调整它的大小到: 

-Xms1512m -Xmx1512m

重新启动,问题解决。 

你会问你的机器配置这么高,内存如此大,为什么不将值配置得大一些呢? 

以下是我的机器的配置. 

这就涉及到另一个问题了,在解释之前,大家可以试一下,再将这两个值加大到比如说 8G会发生什么。 

问题如下: 

 

调得太大后,xmind无法启动了。为什么呢? 

    这是因为通过在命令行中执行 java 或者启动某种基于 Java 的中间件来运行 Java 应用程序时,Java 运行时会创建一个操作系统进程,就像运行基于 C 的程序时那样。实际上,大多数 JVM 都是用 C 或者 C++ 语言编写的。作为操作系统进程,Java 运行时面临着与其他进程完全相同的内存限制:架构提供的寻址能力以及操作系统提供的用户空间。

  架构提供的内存寻址能力依赖于处理器的位数,举例来说,32 位或者 64 位,进程能够处理的位数决定了处理器能寻址的内存范围:32 位提供了 2^32 的可寻址范围,也就是 4,294,967,296 位,或者说 4GB。而 64 位处理器的可寻址范围明显增大:2^64,也就是 18,446,744,073,709,551,616,或者说 16 exabyte(百亿亿字节)。

  处理器架构提供的部分可寻址范围由 OS 本身占用,提供给操作系统内核以及 C 运行时(对于使用 C 或者 C++ 编写的 JVM 而言)。OS 和 C 运行时占用的内存数量取决于所用的 OS,但通常数量较大:Windows 默认占用的内存是 2GB。剩余的可寻址空间(用术语来表示就是用户空间)就是可供运行的实际进程使用的内存。

  对于 Java 应用程序,用户空间是 Java 进程占用的内存,实际上包含两个池:Java 堆和本机(非 Java)堆。Java 堆的大小由 JVM 的 Java 堆设置控制:-Xms 和 -Xmx 分别设置最小和最大 Java 堆。在按照最大的大小设置分配了 Java 堆之后,剩下的用户空间就是本机堆。下图展示了一个 32 位 Java 进程的内存布局:

 

      可寻址范围总共有 4GB,OS 和 C 运行时大约占用了其中的 1GB,Java 堆占用了将近 2GB,本机堆占用了其他部分。请注意,JVM 本身也要占用内存,就像 OS 内核和 C 运行时一样,而 JVM 占用的内存是本机堆的子集。

  由此可见-Xms 和 -Xmx 设置的过大,那么JVM的内存将被抢占,其他应用程序也无法运行。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有