前言
今天在ubuntu上用jadx打开apk时,第一实例正常,第二部就无法运行,发现内存不足.因此,学了下如何配置虚拟内存解决,报如下错误
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000764880000, 838336512, 0) failed; error='无法分配内存' (errno=12)
win10上我分配的虚拟内存,可运行3个jadx
![](https://img.haomeiwen.com/i5438896/a051bba1f640889e.png)
参考:
工作笔记-增加swap分区空间-csdn-编译Android全代码会报错空间不足
ubuntu中swap(虚拟内存)设置-segmentfault思否
Ubuntu Linux 设置虚拟内存-csdn
![](https://img.haomeiwen.com/i5438896/51e3dc0e465eeb12.png)
查看自己的虚拟内存
方法1:free ,默认是以Kb为单位,可以加上参数 -m ,以M显示,其中swap即为虚拟内存.如下,我的已经配置过了 ,是975M.
方法2:top . 这个命令可以看cpu,内存,虚拟内存,以及一些进程(一直滚动显示最新情况).如下:
![](https://img.haomeiwen.com/i5438896/81ba20d4554d105c.png)
输入df -B M(或df -m)查看各分区当前使用情况
![](https://img.haomeiwen.com/i5438896/c2491c6702643d34.png)
fdisk -l查看磁盘分区情况
![](https://img.haomeiwen.com/i5438896/222c10948e8c3984.png)
创建一个 Swap 文件
cd ~
mkdir swap
cd swap
sudo dd if=/dev/zero of=swapfile bs=1024 count=100000
# sudo dd if=/dev/zero of=swapfile bs=1G count=8
#dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
![](https://img.haomeiwen.com/i5438896/dad6d90033b12b8a.png)
其中count的大小对应swap的大小,如上述代码所示count=100000为大约100M
注:设置count值时要注意,如果设置swap大小超过硬盘大小,会导致设置完重启后,虚拟机ubuntu的图形界面进不去
把生成的文件转换成swap文件
sudo mkswap swapfile
![](https://img.haomeiwen.com/i5438896/d0585f86d0316b53.png)
激活 Swap 文件
sudo swapon swapfile
![](https://img.haomeiwen.com/i5438896/0ef8f02619ccffc1.png)
允许su到root
![](https://img.haomeiwen.com/i5438896/61138efbfb9e2c2d.png)
再次查看 free -m 的结果
发现还是不够大
![](https://img.haomeiwen.com/i5438896/f004b6749195d9b7.png)
删除swap
进入swap文件夹,关闭swap
cd ~/swap
swapoff swapfile
删除文件
rm -r swapfile
创建更大的重来一次(步骤看前面的)
![](https://img.haomeiwen.com/i5438896/a1416f3bc966d068.png)
![](https://img.haomeiwen.com/i5438896/2c221aaec686d638.png)
说明
如果按上述操作后,重启会失效
网友评论