OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(...)failed; error='...' (errno=12)
一. 原因
发生在Linux Ubuntu上,运行或编译占用内存巨大的大软件大项目的过程中可能会出现 errno12 : Cannot allocate memory。
原因应为内存不足,可以尝试增加内存条,可以尝试创建或增加swap的空间。如果算法是自己编写的
我的机器用的是swapfile,而不是独立的swap分区,所以修改起来比较方便。
二 . 解决
1.观察
执行命令并观察swap空间是否存在和大小:
$free -h
$swapon -s
2. 删除swapfile
-------------------------------------------------------------------------------------------------------------------------下面是删除swapfile
如果已经存在swapfile(例如:/swapfile),那么先执行如下三条删除之。
#swapoff /swapfile #unmount swap文件
*******下面这行可以不执行,因为后面创建/swapfile时还要再加入这一行
#vim /etc/fstab
编辑删除开头为swap的那一行
#rm -rf /swapfile
再执行free和swapon -s ,检查是否依然存在swap空间
---------------------------------------------------------------------------------------删除完毕----------------------------------------------------
3.创建更大的swapfile
---------------------------------------------------------------------------------------------------------------------------下面是创建swapfile
三步创建:
一步. 创建/swapfile:
#dd if/dev/zero of=/swapfile bs=1M count=16384
其中,16384=16×1024,即创建了一个16G的swapfile。
if=指定输入文件名
of=指定输出文件名
bs=bytes:同时设置读入/输出的块大小为bytes个字节
count=blocks:此为块大小,等于以bs为单位指定的空间。
---------------------
二步. changemode
chmode 0600 /swapfile
三步. 格式化
#mkswap /swapfile
三步. 配置文件,PC启动时随之挂载swap空间
#vim /etc/fstab
在最末增加新的一行
/swapfile swap swap no 0 0
四步. 挂载启动swap空间
#swapon /swapfile
----------------------------------------------------------------------------------创建完毕-----------------
可以执行 free -h swapon -s,看看swap空间大小
重新启动电脑,并执行free和swapon是否依然。
重新编译自己的项目,看看是否解决了OpenJDK的errno=12的问题。
补充信息:
其中errno对应的错误指示信息,参考 <errno.h>
errno0 : Success
errno1 : Operation not permitted
errno2 : No such file or directory
errno3 : No such process
errno4 : Interrupted system call
errno5 : Input/output error
errno6 : No such device or address
errno7 : Argument list too long
errno8 : Exec format error
errno9 : Bad file descriptor
errno10 : No child processes
errno11 : Resource temporarily unavailable
errno12 : Cannot allocate memory
errno13 : Permission denied
errno14 : Bad address
errno15 : Block device required
errno16 : Device or resource busy
errno17 : File exists
errno18 : Invalid cross-device link
errno19 : No such device
errno20 : Not a directory
errno21 : Is a directory
errno22 : Invalid argument
errno23 : Too many open files in system
errno24 : Too many open files
errno25 : Inappropriate ioctl for device
errno26 : Text file busy
errno27 : File too large
errno28 : No space left on device
errno29 : Illegal seek
errno30 : Read-only file system
errno31 : Too many links
errno32 : Broken pipe
errno33 : Numerical argument out of domain
errno34 : Numerical result out of range
errno35 : Resource deadlock avoided
errno36 : File name too long
errno37 : No locks available
errno38 : Function not implemented
errno39 : Directory not empty
errno40 : Too many levels of symbolic links
errno41 : Unknown error 41
errno42 : No message of desired type
errno43 : Identifier removed
errno44 : Channel number out of range
errno45 : Level 2 not synchronized
errno46 : Level 3 halted
errno47 : Level 3 reset
errno48 : Link number out of range
errno49 : Protocol driver not attached
errno50 : No CSI structure available
errno51 : Level 2 halted
errno52 : Invalid exchange
errno53 : Invalid request descriptor
errno54 : Exchange full
errno55 : No anode
errno56 : Invalid request code
errno57 : Invalid slot
errno58 : Unknown error 58
errno59 : Bad font file format
errno60 : Device not a stream
errno61 : No data available
errno62 : Timer expired
errno63 : Out of streams resources
errno64 : Machine is not on the network
errno65 : Package not installed
errno66 : Object is remote
errno67 : Link has been severed
errno68 : Advertise error
errno69 : Srmount error
errno70 : Communication error on send
errno71 : Protocol error
errno72 : Multihop attempted
errno73 : RFS specific error
errno74 : Bad message
errno75 : Value too large for defined datatype
errno76 : Name not unique on network
errno77 : File descriptor in bad state
errno78 : Remote address changed
errno79 : Can not access a needed sharedlibrary
errno80 : Accessing a corrupted sharedlibrary
errno81 : .lib section in a.out corrupted
errno82 : Attempting to link in too manyshared libraries
errno83 : Cannot exec a shared librarydirectly
errno84 : Invalid or incomplete multibyte orwide character
errno85 : Interrupted system call should berestarted
errno86 : Streams pipe error
errno87 : Too many users
errno88 : Socket operation on non-socket
errno89 : Destinationaddress required
errno90 : Message too long
errno91 : Protocol wrong type for socket
errno92 : Protocol not available
errno93 : Protocol not supported
errno94 : Socket type not supported
errno95 : Operation not supported
errno96 : Protocol family not supported
errno97 : Address family not supported byprotocol
errno98 : Address already in use
errno99 : Cannot assign requested address
errno100 : Network is down
errno101 : Network is unreachable
errno102 : Network dropped connection onreset
errno103 : Software caused connection abort
errno104 : Connection reset by peer
errno105 : No buffer space available
errno106 : Transport endpoint is alreadyconnected
errno107 : Transport endpoint is notconnected
errno108 : Cannot send after transportendpoint shutdown
errno109 : Too many references: cannot splice
errno110 : Connection timed out
errno111 : Connection refused
errno112 : Host is down
errno113 : No route to host
errno114 : Operation already in progress
errno115 : Operation now in progress
errno116 : Stale NFS file handle
errno117 : Structure needs cleaning
errno118 : Not a XENIX named type file
errno119 : No XENIX semaphores available
errno120 : Is a named type file
errno121 : Remote I/O error
errno122 : Disk quota exceeded
errno123 : No medium found
errno124 : Wrong medium type
errno125 : Operation canceled
errno126 : Required key not available
errno127 : Key has expired
errno128 : Key has been revoked
errno129 : Key was rejected by service
errno130 : Owner died
errno131 : State not recoverable
errno132 : Operation not possible due toRF-kill
errno133 : Unknown error 133
errno134 : Unknown error 134
errno135 : Unknown error 135
errno136 : Unknown error 136
errno137 : Unknown error 137
errno138 : Unknown error 138
errno139 : Unknown error 139
-----
更多推荐
所有评论(0)