看板 java 關於我們 聯絡資訊
小妹已經爬過之前OutOfMemory的文了 但依舊沒獲得需要的解答 因此希望板上各位大大可以幫忙解惑~ 小妹正在寫的程式是多client傳畫面給server的程式 傳畫面的程式是依據 javaworld的良哥葛的SimpleScreenCaptureServer 這個程式大概跑了十分鐘後就會出現 outOfMemory的問題 heap space爆掉了 問題顯示在在傳client傳byte[]給server 跟server接收client傳byte[]的地方 那一段程式碼如下: public Image getImageFromServer() throws IOException, ClassNotFoundException { connectionClient.sendMessageToServer("GET " + getImageQuality()); byte[] imageByte = (byte[]) connectionClient.getObjectFromServer(); JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder( new ByteArrayInputStream(imageByte)); return (Image) decoder.decodeAsBufferedImage(); } 錯誤訊息如下: Exception in thread "Thread" java.lang.OutOfMemoryError: Java heap space at java.awt.image.DataBufferInt.<init><DataBufferInt.java:41> at java.awt.image.Raster.creatPackedRaster<Raster.java:458> at sun.awt.image.codec.JPEGImageDecoderImpl.allocateDataBuffer<JPEGImageDecoderImpl.java:334> at sun.awt.image.codec.JPEGImageDecoderImpl.readJPEGStream<Native Method> at sun.awt.image.codec.JPEGImageDecoderImpl.decodeAsBufferedImage<JPEGImageDecoderImpl.java:210> 希望各位大大可以為小妹解惑 感激不盡!! -- http://www.wretch.cc/album/jjor -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.125.128.242
Lordaeron:唔, 你的memory 不夠多, 買夠10G吧, 問題就解決了. 04/17 00:46
Lordaeron::P 04/17 00:48
dorwell:樓上的來亂的吧... 04/17 00:53
Jjor:............... 04/17 01:03
Lordaeron:這邊的大師很多, 直接call 他們的id 吧. 04/17 01:09
Jjor:推薦一下!~~謝啦~ 04/17 01:14
mc18:java -Xmx????M 或是向HDD求援? 04/17 02:33
Jjor:我有試過 不過只能延長heap space爆掉的時間~~謝謝~ 04/17 02:35
mc18:那就向硬碟求援吧, 或是詢問其他高手有無更好的解法XD 04/17 02:37
TonyQ:向硬碟求援+1 04/17 03:36
qoo0128:基本上JVM依版本不同僅可支援到1.4G~1.6G的記憶體 04/17 08:38
qoo0128:所以增加記憶體應該不是你所要找尋的好方案~ 04/17 08:41
slalala:要不要從程式碼來看? 看哪邊浪費不必要的空間? 04/17 10:02
blow:樓樓上的q兄,你忘了還有 jvm 64bit。 04/17 11:16
qrtt1:我是樓下的q弟 XD 04/17 12:14
Lordaeron:這邊不是有人說隨便寫都要吃1.6G的, 請他們現身說法一下 04/17 12:20
Lordaeron:如何吃到滿但不會吃到爆吧 04/17 12:22
adrianshum:缺乏理解能力又愛斷章取義又愛凹又不服輸的人又出場了 04/17 12:29
adrianshum:回原po: 先留意會不會有地方把image存著令它不能被gc吧 04/17 12:31
qrtt1:嗯, 去找jconsole 來觀察看看那一個地方leak了 04/17 12:59
Lordaeron:唉, 出場了呢, 一個搞不清64bit的用處在哪的人出場了呢 04/17 13:05
Lordaeron:忘了一件事, C/C++的int 變成64bit 是由人來決定的,想必 04/17 13:08
Lordaeron:會加這種參數的人, 一定是腦袋有問題的 04/17 13:09
adrianshum:咦? 你竟然知道你自己不明白Java 64bit 的用處了? 04/17 13:47
adrianshum:還是那句錯誤論點, 所以就說你理解能力不足了唄 04/17 13:49
adrianshum:C/C++和Java在int的情況的分別搞不清楚, 還好意思說嘴 04/17 13:51
Lordaeron:唉, 你還是回去幫別人一下吧, 不要跟我講64bit了, 你是 04/17 13:52
Lordaeron:基本教義者,我不是,你是連64bitVM 有什麼問題都不知還能 04/17 13:54
Lordaeron:說好的人. 表現一下你的功力吧. 04/17 13:56
adrianshum:C 基本教義者在說人家是基本教義者?就算你分不清楚啦 04/17 17:48
Lordaeron:最好我是C 的基本教義者, 我的telnet 可是delphi寫的. 04/17 19:38
kojilin:笑死...hahaha 04/17 21:19
LPH66:╮(﹀_﹀")╭ 那個"64-bit java"明明就只是JVM在64-bit上的 04/17 21:22
kojilin:某位先生我看你還是不要見笑了拉..這東西不需要多大mem 04/17 21:22
LPH66:實作而已 和JVM上的int到底是不是64-bit根本就是兩碼子事 04/17 21:24
Jjor:大家不要吵架..... 04/17 21:55
adrianshum:最好我是 Java基本教義者, 我寫最多的是 C++ XDD 04/18 12:13