Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过本地网络传输实时数据_Java_Android_Memory Management - Fatal编程技术网

Java 通过本地网络传输实时数据

Java 通过本地网络传输实时数据,java,android,memory-management,Java,Android,Memory Management,目前,我有一个线程不断地通过本地网络发送数据。下面是当前代码的一个片段: @Override public void run() { while(!interrupted()) { byte[] data = new byte[16]; int b = 0; try { intToByteArray(acx[0][0], data, 0); intToByteArray(acx[0][1],

目前,我有一个线程不断地通过本地网络发送数据。下面是当前代码的一个片段:

@Override
public void run() {
    while(!interrupted()) {
        byte[] data = new byte[16];
        int b = 0;
        try {
            intToByteArray(acx[0][0], data, 0);
            intToByteArray(acx[0][1], data, 4);
            intToByteArray(acx[1][0], data, 8);
            for(int i = 0; i < btns.length; i++) {
                if(btns[i] == 1)
                    b |= (int) Math.pow(2, i);
            }
            intToByteArray(b, data, 12);
            //sleep(1000);
            socket.send(new DatagramPacket(data, data.length, InetAddress.getByName(local), port));
        } catch(InterruptedException e) {
            e.printStackTrace();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}
@覆盖
公开募捐{
而(!interrupted()){
字节[]数据=新字节[16];
int b=0;
试一试{
intToByteArray(acx[0][0],数据,0);
intToByteArray(acx[0][1],数据,4);
intToByteArray(acx[1][0],数据,8);
对于(int i=0;i

然而,我在logcat中不断地收到
GC\u FOR\u ALLOC
消息,允许应用程序运行一段时间最终会启动路由器,然后需要重置路由器。是否有更好的方法通过网络发送实时信息?

GC\u FOR\u ALLOC
意味着没有足够的可用内存来满足分配请求,因此需要进行垃圾收集

Logcat
中的许多操作意味着您正在执行一些内存开销大的操作,这些操作最终将被停止。当应用程序的堆增长到允许的最大值时,
GC\u FOR\u ALLOC
将无法释放任何内存,然后
DVM
抛出OfMemoryException并停止应用程序

你应该考虑使用<代码>定时器< /代码>来延迟操作,或者如果你与“代码> UI线程< /代码>有交互作用,然后使用<代码>处理程序。PistPro(RunnRead,LelayDelayMiSeCs) >以给出<代码> DVM < /代码>足够的时间为下一次操作分配足够的内存。

您可以调查应用程序的RAM使用情况和其他泄漏对象,查看这些官方链接

还有一个关于Android中管理内存消耗的一般策略的文档:


是的,使用
服务
,但如果你想通过网络不断发送实时数据,那么无论你做什么,android操作系统迟早都会决定重置它,如果需要的话memory@Sharpedge谢谢你的快速回复!我一定会调查服务的。