重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

java代码突然中断,java程序宕机

java.lang.OutOfMemoryError 程序运行中断 求解答

原因: 常见的有以下几种:

成都创新互联专注于镇赉网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供镇赉营销型网站建设,镇赉网站制作、镇赉网页设计、镇赉网站官网定制、成都微信小程序服务,打造镇赉网络公司原创品牌,更为您提供镇赉网站排名全网营销落地服务。

1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;

2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;

3.代码中存在死循环或循环产生过多重复的对象实体;

4.使用的第三方软件中的BUG;

5.启动参数内存值设定的过小;

常见错误提示: 1.tomcat:java.lang.OutOfMemoryError: PermGen space

2.tomcat:java.lang.OutOfMemoryError: Java heap space

3.weblogic:Root cause of ServletException java.lang.OutOfMemoryError

4.resin:java.lang.OutOfMemoryError

5.java:java.lang.OutOfMemoryError

解决:

设置运用服务参数(把内存改大点):

args="-Xms128m -Xmx888m"

JAVA代码运行中断

换个实现方式。

try {

// 读取图片文件

is = new FileInputStream(srcpath);

/**

* 返回包含所有当前已注册 ImageReader 的 Iterator,这些 ImageReader 声称能够解码指定格式。 参数:formatName - 包含非正式格式名称 . (例如 "jpeg" 或 "tiff")等 。

*/

IteratorImageReader it = ImageIO.getImageReadersByFormatName("jpg");

ImageReader reader = it.next();

// 获取图片流

iis = ImageIO.createImageInputStream(is);

/**

* iis:读取源.true:只向前搜索.将它标记为 ‘只向前搜索’。 此设置意味着包含在输入源中的图像将只按顺序读取,可能允许 reader 避免缓存包含与以前已经读取的图像关联的数据的那些输入部分。

*/

reader.setInput(iis, true);

/**

* p

* 描述如何对流进行解码的类

* p

* .用于指定如何在输入时从 Java Image I/O 框架的上下文中的流转换一幅图像或一组图像。用于特定图像格式的插件 将从其 ImageReader 实现的 getDefaultReadParam 方法中返回 ImageReadParam 的实例。

*/

ImageReadParam param = reader.getDefaultReadParam();

/**

* 图片裁剪区域。Rectangle 指定了坐标空间中的一个区域,通过 Rectangle 对象 的左上顶点的坐标(x,y)、宽度和高度可以定义这个区域。

*/

Rectangle rect = new Rectangle(x, y, width, height);

// 提供一个 BufferedImage,将其用作解码像素数据的目标。

param.setSourceRegion(rect);

/**

* 使用所提供的 ImageReadParam 读取通过索引 imageIndex 指定的对象,并将 它作为一个完整的 BufferedImage 返回。

*/

BufferedImage bi = reader.read(0, param);

// 保存新图片

ImageIO.write(bi, "jpg", new File(subpath));

}catch(Exception e){

e.printStackTrace();

}

finally {

if (is != null)

is.close();

if (iis != null)

iis.close();

}

Java程序执行了一部分,突然中断,报如下错误,应该怎么解决

似乎是Tomcat出现了问题,你能否把那个:(D:\Java\apache-tomcat-6.0.20\bin\hs_err_pid6076.log)文件中的最后日志记录上传上来看看?好像是内存托管出现了异常,和Java虚拟机没有关系

java什么情况会导致程序中断

1,线程正常执行完毕,正常结束。 2,监视某些条件,结束线程的不间断运行。 3,捕获InterruptedException 运行时异常,中断当前线程。 也不知道对不对,凑合着看吧。

北大青鸟java培训:线程的中断分为哪些情况?

相信大家在使用电脑的时候都有过这样的现象,就是在运行一个程序的时候,突然发现不需要了或者是需要启用其他软件的时候,我们会强制关闭这个软件的启动过程,浙江java培训认为这个行为在java编程开发中就叫做线程的中断。

每一个线程都有一个boolean类型标志,用来表明当前线程是否请求中断,当一个线程调用interrupt()方法时,线程的中断标志将被设置为true。

我们可以通过调用Thread.currentThread().isInterrupted()或者Thread.interrupted()来检测线程的中断标志是否被置位。

这两个方法的区别是Thread.currentThread().isInterrupted()是线程对象的方法,调用它后不清除线程中断标志位;而Thread.interrupted()是一个静态方法,调用它会清除线程中断标志位。

一般来说中断线程分为三种情况:(一):中断非阻塞线程(二):中断阻塞线程(三):不可中断线程(一):中断非阻塞线程中断非阻塞线程通常有两种方式:(1)采用线程共享变量这种方式比较简单可行,需要注意的一点是共享变量必须设置为volatile,这样才能保证修改后其他线程立即可见。

(2)采用中断机制(二):中断阻塞线程当线程调用Thread.sleep()、Thread.join()、object.wait()再或者调用阻塞的i/o操作方法时,都会使得当前线程进入阻塞状态。

那么此时如果在线程处于阻塞状态是调用interrupt()方法设置线程中断标志位时会出现什么情况呢!此时处于阻塞状态的线程会抛出一个异常,并且会清除线程中断标志位(设置为false)。

这样一来线程就能退出阻塞状态。

当然抛出异常的方法就是造成线程处于阻塞状态的Thread.sleep()、Thread.join()、object.wait()这些方法。

需要注意的地方就是Thread.sleep()、Thread.join()、object.wait()这些方法,会检测线程中断标志位,如果发现中断标志位为true则抛出异常并且将中断标志位设置为false。

所以while循环之后每次调用阻塞方法后都要在捕获异常之后,调用Thread.currentThread().interrupt()重置状态标志位。

(三):不可中断线程有一种情况是线程不能被中断的,就是调用synchronized关键字和reentrantLock.lock()获取锁的过程。

但是如果调用带超时的tryLock方法reentrantLock.tryLock(longtimeout,TimeUnitunit),那么如果线程在等待时被中断,将抛出一个InterruptedException异常,这是一个非常有用的特性,因为它允许程序打破死锁。

你也可以调用reentrantLock.lockInterruptibly()方法,它就相当于一个超时设为无限的tryLock方法。

JAVA程序有时候突然停了, 怎么解决?

如果是用eclipse自带的tomcat,那么打断点以后,如果程序经过断点,就会直接停住,进入debug模式;如果是用的server启动,需要右键debug模式启动.

如果是突然挂掉,那么控制台报了什么错么


本文题目:java代码突然中断,java程序宕机
分享链接:http://cqcxhl.com/article/phcidh.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP