作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个应用程序,每 50 毫秒捕获一次帧 (UDP) 并使用此数据更新我的 View 。但是我的应用程序每 2 秒就会卡住 100/200 毫秒。在 LogCat 中出现一条消息:GC_CONCURRENT。
我不知道这条消息和我的卡住之间是否存在联系。如果是,是否有避免这种情况的解决方案?`
try {
view.setClientSocket(new MulticastSocket(54321));
ip = InetAddress.getByName("224.2.2.4");
view.getClientSocket().joinGroup(ip);
} catch (SocketException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int cpt = 0;
while(true){
cpt++;
try {
if (view.isPort_change() == true){
view.setClientSocket(new MulticastSocket(54321));
ip = InetAddress.getByName("224.2.2.4");
view.getClientSocket().joinGroup(ip);
view.setPort_change(false);
}
int result = -1;
if(view.isCapture() == true && listeinit==true)
{
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length,ip,54321);
view.getClientSocket().receive(receivePacket);
String modifiedSentence = new String(receivePacket.getData(),0,receivePacket.getLength());
for(int i=0; i<modifiedSentence.split("\\+").length; i++)
{
String[] donnee = modifiedSentence.split("\\+")[i].split(":");
for(Hashtable.Entry<Integer, String> entry : view.getAll_parameters().entrySet()){
if(entry.getValue().equals(donnee[0])){
result = entry.getKey();
break;
}
}
if (result== -1)
{
view.getBloc().add(donnee[1]);
}
else
{
view.getBloc().set(result,donnee[1]);
}
}
// if(cpt%5==0)
{
view.getHandler().sendEmptyMessage(1);
}
}
}`
最佳答案
GC_CONCURRENT 表示正在进行垃圾回收。您正在分配/取消分配大量内存,而 JVM 必须每 2 秒进行一次垃圾回收。您应该尝试重用内存,而不是在每次发送数据包时都分配和丢失对它的引用。
关于java - 应用程序每 2 秒卡住一次 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13126842/
程序应每 5 秒在屏幕上打印一次并声明“alive at %d milliseconds\n”。当用户输入时对于投票程序或 对于中断版本,程序应该停止并输出: program terminated b
这是我创建的用于说明问题的示例程序。该程序应该每秒打印(计数)自程序启动(或计数器重置)以来的秒数,并每 10 秒打印一个字符串。每 90 秒,应将不同的字符串写入标准输出。但这并不像预期的那样有效,
我是一名优秀的程序员,十分优秀!