JDK小Bug汇总
Java官方的Logger.getGlobal().info无效
- 无效代码
Logger.getGlobal().info("start");
- 解决方案(三选一):
Logger.getLogger("global").setLevel(Level.INFO)
Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).info("start");
Logger.getLogger("global").info("start");
JAVA线程加载图片挂在 java.awt.MediaTracker.waitForID
- 问题发生时打印的日志一般如下所示
"AWT-EventQueue-0" prio=10 tid=0x0811e400 nid=0x3d80 in Object.wait() [0xdeb95000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xe651f1f8> (a java.awt.MediaTracker)
at java.awt.MediaTracker.waitForID(MediaTracker.java:651)
- locked <0xe651f1f8> (a java.awt.MediaTracker)
at javax.swing.ImageIcon.loadImage(ImageIcon.java:264)
- locked <0xe651f1f8> (a java.awt.MediaTracker)
at javax.swing.ImageIcon.<init>(ImageIcon.java:194)
- 该问题属于JDK Bug,加载图片有较小几率会挂死当前线程。而挂死了UI线程等于整个客户端都完蛋了。
- 解决该问题的思路:
- 首先用一个对象当锁。
- UI线程先启动线程A,然后synchronize锁并wait唤醒,可设超时时间。
- 线程A加载图片,在工作完成时synchronize锁并notify对象。
- 这样就算线程A挂死,也不影响UI线程的正常运行。
参考资料
http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6995182
http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4881229
控制台输出Unloading class
- 问题发生时控制台输出一般如下
[Unloading class sun.reflect.GeneratedMethodAccessor22]
[Unloading class sun.reflect.GeneratedMethodAccessor47]
[Unloading class sun.reflect.GeneratedMethodAccessor24]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor6]
[Unloading class sun.reflect.GeneratedMethodAccessor26]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor13]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor16]
- 原因可能是程序启动参数里含有
-Xloggc
参考资料
http://stackoverflow.com/questions/2833983/meaning-of-the-unloading-class-messages
http://bugs.java.com/bugdatabase/view_bug.do?bug_id=7040410
SSH调用Windows下的Java程序提示版本异常
Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'
has value '1.8', but '1.6' is required.
Error: Could not find java.dll
Error: Could not find Java SE Runtime Environment.
解决方案:
- 将C:\ProgramData\Oracle\Java\javapath从PATH环境变量中去除
- 在C:\Windows\System32目录下删除java、javaw、javaws
- 最根本的解决方法是安装JDK的时候不要勾选JRE
JDK小Bug汇总的更多相关文章
- 【PHP ThinkPHP框架】小bug汇总[更新]
目录结构 1.函数调用 2.绑定select下拉框数据 3.PHP查询功能 4.格式化时间和价钱 5.IF标签比较两个变量 6.eq标签比较两个变量 7.新增信息或者修改信息的自动验证和自动填充 8. ...
- 【Asp.Net】小BUG汇总[更新]
目录结构 1.Dictionary<T>遍历 2.Asp.net网站部署在C盘无法上传下载文件 3.Asp.Net网站发布后远程无法访问 4.GDI+中发生一般性错误 1.Dictiona ...
- JDK的小Bug你了解么?
用了这么长时间的JDK了,有没有老铁发现JDK的bug呢?从最早版本的JDK1.2到现在普及开的JDK1.8以来,JAVA经历了这么多年的风风雨雨,依然坚持在一线上,是不是感觉很神奇,但是,有没有多 ...
- JDK的一个关于stack的小bug
在一个项目中,使用了一个java.util.Stack,总所周知,栈是先入后出的,那么遍历其中元素的时候,也应该按照这个顺序遍历才对,但是实际情况确不是,以下是测试代码. Stack stack = ...
- 利用Jdk 6260652 Bug解析Arrays.asList
在java.util.ArrayList源码中: c.toArray might (incorrectly) not return Object[] (see 6260652) 产生疑惑: 附上Jav ...
- 程序员实用JDK小工具归纳,工作用得到
在JDK的安用装目录bin下,有一些有非常实用的小工具,可用于分析JVM初始配置.内存溢出异常等问题,我们接下来将对些常用的工具进行一些说明. JDK小工具简介 在JDK的bin目录下面有一些小工具, ...
- 喜提JDK的BUG一枚!多线程的情况下请谨慎使用这个类的stream遍历。
你好呀,我是歪歪. 前段时间在 RocketMQ 的 ISSUE 里面冲浪的时候,看到一个 pr,虽说是在 RocketMQ 的地盘上发现的,但是这个玩意吧,其实和 RocketMQ 没有任何关系. ...
- Chrome出了个小bug:论如何在Chrome下劫持原生只读对象
Chrome出了个小bug:论如何在Chrome下劫持原生只读对象 概述 众所周知,虽然JavaScript是个很灵活的语言,浏览器里很多原生的方法都可以随意覆盖或者重写,比如alert.但是为了保证 ...
- 解决JqueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug
前些日子不是在做 使用Jquery-UI实现一次拖拽多个选中的元素操作嘛,在持续完善这个组件时遇到了一个关于拖放排序的bug.今天就着图片和代码重现一下,也顺便告诉大家如何解决这个问题. 首先先上图描 ...
随机推荐
- Windows操作系统优化(Win7版) - 进阶者系列 - 学习者系列文章
Windows系统优化是个永恒的话题.在操作系统的打包制作方面更是有得一拼.前面提到的龙帝国社区的XP系统就是一个典型的例子,打包好的系统就已经是经过优化的,使用者无需再使用优化工具进行处理.下面就对 ...
- SQL SERVER 2012 修改数据库默认位置不立即生效
今天修改SQL SERVER 2012的数据库默认位置:即数据文件.日志文件默认位置时遇到一个问题,单击"服务器属性"(Server Properties)--> 数据库设置 ...
- 看懂Oracle执行计划
最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也来总结一下自己最近所学,不定时更新ing- 一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问 ...
- C++基础——模拟事务 (1)COMMAND模式
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...
- Terminate Instance 操作详解 - 每天5分钟玩转 OpenStack(33)
本节通过日志详细分析 Nova Terminate 操作. Terminate 操作就是删除 instance,下面是 terminate instance 的流程图 向 nova-api 发送请求 ...
- PKCS#1规范阅读笔记1--------基本概念
规范中有很多数学相关的推演和计算,并不打算在这里介绍,主要介绍一下相关的计算流程及最终的签名结果. 算法可以分为:对称算法和非对称算法两大类.对称算法加密和解密都用的是同一个密钥:而非对称算法却是有一 ...
- Linux字符串截取命令
一.简单截取 假设有变量 var=http://www.google.com/test.htm 1. # 号截取,删除左边字符,保留右边字符.echo ${var#*//}其中 var 是变量名,# ...
- Chrome Developer Tools:Network Panel说明
官方资料:Chrome Developer Tools: Network Panel 一.chrome Developer Tools:Network Panel 从网络面板中可以获取很多有用信息,如 ...
- C#学习笔记-Windows窗体自定义初始位置
根据屏幕大小定义初始位置: (这个不是难,但是最近常常忘记,记着方便查看.) //获取当前屏幕的长和宽 int ScreenX = Screen.PrimaryScreen.Bounds.Width; ...
- Linux Kernel代码艺术——系统调用宏定义
我们习惯在SI(Source Insight)中阅读Linux内核,SI会建立符号表数据库,能非常方便地跳转到变量.宏.函数等的定义处.但在处理系统调用的函数时,却会遇到一些麻烦:我们知道系统调用函数 ...