5
linux/redhatのメモリ不足の問題があり、同じプログラムがWindowsマシンで動作しています。linux-redhatを使ったjavaのメモリ不足の例外
私のLinuxマシン構成は15Gb RAMです。
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.sql.ResultSet;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
/**
*
* @author ndoshi
*/
public class Dwnld {
BufferedImage bi8 = null, bi16 = null;
ImageIcon ii = null;
ResultSet rs, rsDwnld;
String OG = "ogImage\\";
String CROP8 = "Crop8\\";
String CROP16 = "Crop16\\";
String TIME = "", ErrorLog = "", ErrorLogPro = "";
int hashInc8 = 0;
int hashInc16 = 0;
int totalround = 0;
int countProcess = 0;
boolean download_new = false;
private int row = 0;
int Dwnld = 0, NotDwnld = 0;
final String OP_Log = "Log", OP_Error = "ErrorLog", OP_ErrorPro = "ErrorLogProcess";
int r, g, b, k, ih, j;
int sr = 0, sg = 0, sb = 0, sk = 0;
int rg, gg, bg, kg;
String s = "", s1 = "", hash16, hash8;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new Dwnld();
}
public Dwnld(){
try {
BufferedImage image = null;
InputStream is = null;
OutputStream os = null;
URL url = new URL("https://rukminim1.flixcart.com/image/312/312/t-shirt/u/g/k/33solidblackmelangeblack-sayitloud-m-original-imaehfytzzzazfyf.jpeg?q=70");
is = url.openStream();
os = new FileOutputStream(OG + "1.jpg");
byte[] b = new byte[2048];
int length;
while ((length = is.read(b)) != -1) {
os.write(b, 0, length);
}
image = ImageIO.read(new File(OG + "1.jpg"));
is.close();
os.close();
System.out.println("Hash 16 = "+hash16);
System.out.println("Hash 8 = "+hash8);
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}
エラーが取得しています
java -Xms2048m -Xmx6096m Dwnld
として、私はXMS & XMXでメモリを増やすのSAMイービを実行しています:
Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:714)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1056)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1301)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at java.net.URL.openStream(URL.java:1037)
at Dwnld.<init>(Dwnld.java:53)
at Dwnld.main(Dwnld.java:43)
のようなものを持つあなたがfinally節(またはリソースでみてください使用)で、あなたのストリームを閉じる必要があります – Michael
これは役に立つかもしれません - https://plumbr.eu/outofmemoryerror/unable-to-create-new-native -糸 – Manish