java 串口 内存溢出

问题描述

做了一个死循环,对串口读写,开串口-写数据-读数据-关;结果发现运行12个小时后,抛出异常:Exceptioninthread"Thread-1"java.lang.OutOfMemoryError:unabletocreatenewnativethreadatjava.lang.Thread.start0(NativeMethod)atjava.lang.Thread.start(Thread.java:713)atcom.sun.comm.Win32SerialPort.<init>(Win32SerialPort.java:51)atcom.sun.comm.Win32Driver.getCommPort(Win32Driver.java:69)atjavax.comm.CommPortIdentifier.open(CommPortIdentifier.java:314)atcn.cfxy.chh.serial.Serial.initialize(Serial.java:60)这是什么原因造成的?

解决方案

解决方案二:
它不是说了吗:unabletocreatenewnativethread
解决方案三:
我也没创建线程
解决方案四:
你所调用的jar里边有创建线程操作啊,你看看你的异常堆栈信息。我想想你读写没有关闭就是,要不线程都没有执行完,而且在不断创造。或者你贴下代码
解决方案五:
有一个线程,但线程是这样的;程序思路:main(){开启线程;}线程(){run(){while(true){打开串口-写数据--读数据--关闭串口}}}就建了一个线程啊,之后一直死循环执行,不会再重新创建这个线程吧。
解决方案六:

解决方案七:
有人没,帮帮忙啊

时间: 2024-10-23 03:57:51

java 串口 内存溢出的相关文章

找出Java程序内存溢出的元凶

我曾经在刚入行的时候做过一个小的swing程序,用到了java SE,swing,Thread等东东,当初经验少 也没有做过严格的性能测试,布到生产环境用了一段时间后发现那个小程序有时候会抛 java.lang.OutofMemoryError异常,就是java的内存溢出.当时也上网查了不少资料,试过一些办法,代 码也稍微做了些优化,但是有一个问题我始终是找不到解决的方案 - 不知为什么子窗体关闭后java的垃 圾回收机制无法回收其资源,因为这个Java程序可能要经常开关一些子窗体,那么这些子窗

java PermGen 内存溢出问题

问题描述 java PermGen 内存溢出问题 在写java项目时,由于引入第三方库, PermGen 在项目访问一段时间后 就会溢出.请问怎么解决 解决方案 看看jvm调优的类似文章. 解决方案二: 看你jvm参数设置了,方法区的大小是可以设置的

Java常见内存溢出异常分析与解决_java

Java虚拟机规范规定JVM的内存分为了好几块,比如堆,栈,程序计数器,方法区等,而Hotspot jvm的实现中,将堆内存分为了三部分,新生代,老年代,持久带,其中持久带实现了规范中规定的方法区,而内存模型中不同的部分都会出现相应的OutOfMemoryError错误,接下来我们就分开来讨论一下.java.lang.OutOfMemoryError这个错误我相信大部分开发人员都有遇到过,产生该错误的原因大都出于以下原因: JVM内存过小.程序不严密,产生了过多的垃圾. 导致OutOfMemor

JAVA程序内存溢出问题原因分析_java

本文较为详细的分析了JAVA程序内存溢出问题原因.分享给大家供大家参考.具体如下: 遇到一个线上系统报 java.lang.OutOfMemoryError: PermGen space 错误,需要定位一下问题.很久之前到时弄过这个,现在还真有点不记得了,但这个真的是一个非常有意思的问题,值得好好研究一下.首先第一反应当然是加上-XX:+PrintGCDetails参数来看具体的GC日志,但是由于程序是tomcat启动的,担心里面封装的东西太多不好定位,既然在windows下面,所以还是借助可视

Tomcat运行Java Web内存溢出总结

如果JVM里运行的程序, 它的内存堆和持久存储区域的都满了,这个时候程序还想创建对象实例的话,垃圾收集器就会启动,试图释放足够的内存来创建这个对象.这个时候如果垃圾收集器 没有能力释放出足够的内存,它就会抛出OutOfMemoryError内存溢出错误. SUN JVM的内存管理方式: SUN的JVM是类似人类家族,也就是在一个地方创建对象,在它长期占据空间之前给它多次死亡的机会,SUN JVM会划分为: 1.年轻的一代(Young generation),包括EDEN和2个幸存者空间(出发地和

Java常见内存溢出(OOM)解决方案

1,         程序计数器 一块很小的内存空间,作用是当前线程所执行的字节码的行号指示器. 2,         java栈 与程序计数器一样,java栈(虚拟机栈)也是线程私有的,其生命周期与线程相同.通常存放基本数据类型,对象引用(一个指向对象起始地址的引用指针或一个代表对象的句柄),reeturnAddress类型(指向一条字节码指令的地址) 栈区域有两种异常类型:如果线程请求的栈深度大于虚拟机所允许的深度,将抛StrackOverflowError异常:如果虚拟机栈可以动态扩展(大

关于java堆内存溢出的几种情况(转)

  [情况一]: java.lang.OutOfMemoryError: Java heap space:这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环: 如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决: <jvm-arg>-Xms3062m</jvm-arg> <jvm-arg>-Xmx3062m</jvm-arg> [情况二] java.lang.OutOfMemoryError: GC overhead lim

java中内存溢出异常的分析

首先使用jdk自带的工具jmap转储(dump)java内存堆数据到本地文件中.jmap转储(dump)命令格式如下: jmap -dump:<dump-options> <pid> <dump-options>表示dump选项,<pid>表示需要dump的java应用程序的进程ID dump-options可以有以下三种参数,参数之间用逗号隔开: live,只dump活动的object,如果没有指定,表示dump所有object format=b,字节流格

JAVA中的内存溢出

一.概述 内存溢出与数据库锁表的问题,可以说是开发人员的噩梦,一般的程序异常,总是可以知道在什么时候或是在什么操作步骤上出现了异常,而且根据堆栈信息也很容易定位到程序中是某处出现了问题.内存溢出与锁表则不然,一般现象是操作一般时间后系统越来越慢,直到死机,但并不能明确是在什么操作上出现的,发生的时间点也没有规律,查看日志或查看数据库也不能定位出问题的代码. 更严重的是内存溢出与数据库锁表在系统开发和单元测试阶段并不容易被发现,当系统正式上线一般时间后,操作的并发量上来了,数据也积累了一些,系统就