NullPointerException in Java with no StackTrace

2018年1月7日 没有评论

这周一个项目遇到一个问题,同事查看日志发现抛出:NullPointerException,却没有堆栈信息,然后同事感觉很奇怪,因为打日志的方法,打印的确实是:e,而不是很多人不明所以的打印的:e.getMessage()。然后我看了一下想起来我看过某本书上说过的,JIT 优化。当某个异常抛出很多次之后,由于 Java 虚拟机 JIT 优化,会省略堆栈信息。往上面翻日志肯定可以会找到报错的地方,当然会出现报错的信息太多,比较难翻。写这篇文章的本来想找找那本书,参考一下的,结果忘了是那本书了,一时没找到,不过这个问题虽然不是非常常见,但是网上还是有很多说明的,所以就简单说说 JVM 有一个参数:O[……]

Read more

你假笨JVM参数 – 007 UseGCLogFileRotation NumberOfGCLogFiles GCLogFileSize

2017年12月31日 没有评论

你假笨的第七次分享,也是你假笨在 2017 年的最后一次关于 JVM 的分享:

序号:007
时间:2017-08-10
参数:
-XX:UseGCLogFileRotation
-XX:NumberOfGCLogFiles
-XX:GCLogFileSize
含义:
这次分享了3个设置滚动记录GC日志的参数
通过参数-Xloggc:xxx可指定GC日志文件路径
普通情况下,GC日志文件内容会不断积累,进程重启后日志文件会被覆盖
这次分享的3个参数在设置-Xloggc参数的前提下有效

-XX:UseGCLogFileRotation
Enabled GC lo[……]

Read more

你假笨JVM参数 – 006 ExplicitGCInvokesConcurrent

2017年12月23日 没有评论

你假笨的第六次分享:

序号:006
时间:2017-07-31
参数:-XX:ExplicitGCInvokesConcurrent
含义:
Enables invoking of concurrent GC by using the System.gc() request.
This option is disabled by default and can be enabled only together with the -XX:+UseConcMarkSweepGC option.
System.gc()是正常FULL GC,会STW
打开此参数后,在做System[……]

Read more

你假笨JVM参数 – 005 CMSScavengeBeforeRemark

2017年12月17日 没有评论

你假笨的第五次分享:

序号:005
时间:2017-07-24
参数:-XX:CMSScavengeBeforeRemark
含义:
Enable scavenging attempts before the CMS remark step.
开启或关闭在CMS重新标记阶段之前的清除(YGC)尝试
CMS并发标记阶段与用户线程并发进行,此阶段会产生已经被标记了的对象又发生变化的情况,若打开此开关,可在一定程度上降低CMS重新标记阶段对上述“又发生变化”对象的扫描时间,当然,“清除尝试”也会消耗一些时间
注,开启此开关并不会保证在标记阶段前一定会进行清除操作

小程序截图[……]

Read more

你假笨JVM参数 – 004 MaxTenuringThreshold

2017年12月10日 没有评论

你假笨的第四次分享:

序号:004
时间:2017-07-21
参数:-XX:MaxTenuringThreshold
含义:
Sets the maximum tenuring threshold for use in adaptive GC sizing.
The largest value is 15.
The default value is 15 for the parallel (throughput) collector, and 6 for the CMS collector.
在可自动调整对象晋升老年代年龄阈值的GC中,该参数用于设置上述年龄阈值的最大值[……]

Read more

你假笨JVM参数 – 003 CompileCommand

2017年11月25日 没有评论

你假笨的第三次分享:

序号:003
时间:2017-07-19
参数:-XX:CompileCommand
含义:
Specifies a command to perform on a method.
该参数用于定制编译需求,比如过滤某个方法不做JIT编译
若未指定方法描述符,则对全部同名方法执行命令操作,具体如何指定见下文[举例]
可使用星号通配符(*)指定类或方法,具体如何使用见下文[举例]
该参数可多次指定,或使用 换行符(\n)分隔参数后的多个命令
解析完该命令后,JIT编译器会读取.hotspot_compiler文件中的命令,该参数也可写在.hotspo[……]

Read more

MySQL : The last packet successfully received from the server was XXX milliseconds ago

2017年11月11日 没有评论

14年毕业写完论文没事干的时候,自己玩微信公众号开发,当时想做一个自然语言交互,其实就是想试一下lucene,但是当时建索引的时候偶尔会报这个错,一致不知道具体原因,去网上搜索但是天下文章一大抄,你抄我来我抄他,也没找到原因,后来因为工作中也没遇到过,感觉应该是自己当时水平不行就忘了这件事,前几天 fatsjson 和 druid 的作者温少突然在一个群里面说有人通过阿里工单反馈这个问题,他给追踪了一下,找到了原因,原来还是还是有人遇到这个问题,今天记录一下,希望对遇到这个问题的小伙伴有帮助,报错的信息大概就是:


Caused by: com.mysql.jdbc.excepti[......]

Read more

你假笨说JVM参数 – 002 StringTableSize

2017年11月5日 没有评论

没想到距离第一次整理你假笨的分享已经过去两个多月了,近期会继续整理一系列你假笨关于JVM参数的分享,下面是第二次:

序号:002
时间:2017-07-14
参数:-XX:StringTableSize
含义:Number of buckets in the interned String table
String.intern() 被调用时会往 Hashtable 插入一个 String(若该 String 不存在),这里的 Table 就是 StringTable,此参数就是这个 StringTable 的大小,若此参数设置过小,明显的问题就是过多的hash碰撞,造成在查找字[……]

Read more

程序员都应该懂点开源许可协议

2017年10月1日 没有评论

最近 Facebook 开源的 React 的开源协议专利条款一事闹得沸沸扬扬,著名的 WordPress、百度等纷纷声明弃用 React,最终 Facebook 听从大众的声音改回了BSD,这就牵涉到一个如何选择开源协议的问题,因为 React 是一个生态,所以这事影响比较大,其实之前有很多关于开源协议用错导致原作者利益受损的事,例如前两个月就有一个被雷军称赞的称为最牛的 00 的 CEO 的公司抄袭别人代码连素材都不修改的案例,所以想到之前曾看到有一个乌克兰程序员 Paul Miller 制作了一张图,一分钟明白你应该选择哪个开源协议,原图如下:

原文地址:http://pa[……]

Read more

分类: 其他 标签: ,

是的,我也开启了全站HTTPS

2017年9月3日 没有评论

现在的趋势都在全站HTTPS,据说在Google内部有一个时间表,会把所有未开启HTTPS的网站标注为不安全(目前仅仅会把带密码框的输入页标注为不安全),所以一直想玩玩,去年的时候就看到新浪timyang的博客开启了全站HTTPS,并写了一篇文章如何开启,当时就想玩玩,但感觉还是稍有麻烦,而且当时的博客服务器用的Apache,对Apache配置不熟,想着是自己的小博客就没动,前几天突然看到coolshell网也开启了全站HTTPS,发现现在配置变得很简单了,而且我的博客服务器也由Apache换成了Nginx,所以就玩了玩,确实很方便。
首先声明,无论是timyang还是左耳朵耗子,使用的都是[……]

Read more

分类: Java 标签: , ,