转载请注明原创出处,谢谢! 题目回顾 JVM菜鸟进阶高手之路十三,问题现象就是相同的代码,jvm参数不一样,表现的现象不一样. private static final int _1MB = 1024 * 1024; public static void main(String[] args) throws Exception { byte[] all1 = new byte[2 * _1MB]; byte[] all2 = new byte[2 * _1MB]; byte[] all3 = n…
转载请注明原创出处,谢谢! 最近没有什么实战,准备把JVM知识梳理一遍,先以开发人员的交流来谈谈jvm这块的知识以及重要性,依稀记得2.3年前用solr的时候老是经常oom,提到oom大家应该都不陌生,那个时候也并没有从根本解决oom,由于对jvm不熟悉,只是去百度,到处都是配置jvm参数的,那个时候啥不懂,直接粘贴,但是并没有解决问题,通过这个就告诉我们作为开发人员也需要对jvm很熟悉才行,问题来了,很多人会说我的代码并没有出现oom啊,不需要关注啊,因为不理解不知道重要性,可以回头看看的我的…
转载请注明原创出处,谢谢! 经过 4 次跳票,历经曲折的 Java 9 正式版终于发布了!今天看着到处都是jdk9发布了,新特性说明,心想这么好的蹭热度计划能错过嘛,哈哈,所以就发了这篇文章. 目前jdk9和jvm9的规范都还没有出来,很多细节估计还不清楚,基本就是通过官方介绍,看的. 所以各位看官莫急 去首页下载jdk9,你会发现: 不这么吓唬我们,我们一般不会这么快用的 之后下载页发现和以前的略有不同,没有32位了. 下载.安装和以前没有啥区别,之后运行效果: Java Platform,…
转载请注明原创出处,谢谢! 前几天有个朋友问了我个问题,下面给大家分享下,希望大家积极在评论区进行评论留言,等你来战!!! 先来个趣味题,热身下,引出后面的jvm题目. 地上的影子是那个人的? 地上的影子是左边人的还是右边人的? 哈哈哈,知道你一定挺纠结的吧.下面看看今天的jvm这个问题呢? 这个JVM现象该如何解释呢? 代码如下: private static final int _1MB = 1024 * 1024; public static void main(String[] args…
https://mp.weixin.qq.com/s/qD1LFmsOiqZHD8iZX97OfA? 问题现象 代码如下,使用 ParNew + Serial Old 回收器组合与使用 ParNew + CMS 回收器组合时,结果为什么差异如此之大 ? private static final int _1MB = 1024 * 1024;    public static void main(String[] args) throws Exception {        byte[] all…
转载请注明原创出处,谢谢! 今天看群聊jvm,通常会问ygc合适吗? 阿飞总结,可能需要2个维度,1.单位时间执行次数,2.执行时间 ps -p pid -o etime 查看下进程的运行时间, 17天才这么点ygc,(这里算出频率),正常, 然后再算出ygc每次的时间,即142/7618=18ms,正常 -o后面可以加很多东西,可以通过ps L查看可以加哪些定义 总结性,3s一次ygc的频率,甚至频率更低,5s一次,7s一次,这是正常的:如果超过1s一次ygc,0.5s一次ygc那可能eden…
转载请注明原创出处,谢谢! 今天在JVMPocket群里面看见,阿牛发了一个gc截图,之后ak47截图了特别恐怖,我就觉得好奇,去看看服务情况,截图日志如下 关于jstat命令详情可以参考:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html 高手就是高手,就通过这个,直接提出1,就是达到old的92%的阈值了 不断做cms gc 2.估计是不断做system gc这些都是猜测,让执行 jstat -gccau…
转载请注明原创出处,谢谢! 在第八系列最后有些疑惑的地方,后来还是在我坚持不懈不断打扰笨神,阿飞,ak大神等,终于解决了该问题.第八系列地址:http://www.jianshu.com/p/7f7cecb983cc. 关于MAT工具相关知识解惑 MAT 不是一个万能工具,它并不能处理所有类型的堆存储文件.但是比较主流的厂家和格式,例如 Sun, HP, SAP 所采用的 HPROF 二进制堆存储文件,以及 IBM 的 PHD 堆存储文件等都能被很好的解析,MAT下载地址,以及相关文档. 获取堆…
转载请注明原创出处,谢谢! gc日志问题 查看docker环境的gc日志,发现是下面这种情况,很奇怪,一直怀疑是docker环境那里是否有点问题,并没有怀疑配置,之前物理机上面的gc日志都是正常那种. 表示很奇怪,后来飞哥告诉我,有没有PrintGCDetails这个参数呀?一看果然,加上之后gc日志就和我们以前看的正常格式一样了. Xmn问题 -Xms4g -Xmx4g -Xmn3g 使用cms回收器,查看gc日志,发现一次ygc需要效果大概20s多,平均时间都在10s左右,入下图:查看jma…
转载请注明原创出处,谢谢! 因为每个链路都会对其性能造成影响,应该是全链路的修改压测(ak大神经常说全链路!).本次基本就是局域网,所以并没有怎么优化,其实也应该考虑进去的. Linux系统参数层面的修改: 修改可打开文件数和用户最多可开发进程数 命令: ulimit -n 655350 ulimit –u 655350 可以通过ulimit –a查看参数设置,不设置时默认为1024,默认情况下,你会发现请求数到到一定数值后,再也上不去了. 操作系统内核优化 net.ipv4.tcp_max_t…
转载请注明原创出处,谢谢! 上次分析详细地址在:http://www.jianshu.com/p/a6236cd39e2d 以为上次问题是rmi的问题就此结束了,但是问题并没有结束,其实本次问题不是rmi问题导致的,但是rmi也的确可能会有sys.gc fullgc问题. 查看GC统计汇总情况: java jstat -gcutil pid 3s 30参考gc,发现大概一小时运行一次FGC,特别奇怪,笨神一看这样的问题就知道是system gc导致的System.gc()的默认效果是引发一次st…
转载请注明原创出处,谢谢! 参考gc,发现大概一小时运行一次FGC,特别奇怪,笨神一看这样的问题就知道是system gc导致的,rmi默认一小时主动触发一次,由于没有gc日志,通过jstat命令观察2小时发现通过观察的确是由于System.gc导致的. system.gc其实是做一次full gc system.gc会暂停整个进程 1小时1次FGC问题,该问题在高并发情况下对性能产生很大的波动不可小看,也许一个小小的调优可以给性能带来很大的改善.通过查看JVM参数的确发现了RMI的相关配置,如…
转载请注明原创出处,谢谢! 由于很多的jvm分析最好是基于gc日志的,所以添加参数如下即可: -verbose:gc -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/appl/gclogs/gc.log 备注:-Xloggc的目录需要提前建好. 个人公众号…
转载请注明原创出处,谢谢! 笨神大大分享: 小程序里面搜索:JVMPocket,这个小程序是笨神大大提供的,里面可以搜索相关JVM参数,用法. -XX:MaxTenuringThreshold,这个参数主要是设置YGC的时候,新生代的对象正常情况下最多经过多少次YGC的过程会晋升到老年代. 注意这里表达的是最多,意思就是说某个对象其实并不一定要达到这个值才会晋升到old的,具体经过多少次ygc进入到old,这个取决于当时的具体情况,比如survivor的内存大小,以及那些活对象的情况.在CMS…
转载请注明原创出处,谢谢! 在第八系列最后有些疑惑的地方,后来还是在我坚持不懈不断打扰笨神,阿飞,ak大神等,终于解决了该问题.第八系列地址:http://www.cnblogs.com/lirenzuo/p/7582530.html. 关于MAT工具相关知识解惑 MAT 不是一个万能工具,它并不能处理所有类型的堆存储文件.但是比较主流的厂家和格式,例如 Sun, HP, SAP 所采用的 HPROF 二进制堆存储文件,以及 IBM 的 PHD 堆存储文件等都能被很好的解析,MAT下载地址,以及…
转载请注明原创出处,谢谢! 问题 这个Xmn设置为1G,,我用jmap -heap 看,这个Eden From To怎么不是一个整8:1:1的关系呢? 我看内存分配还是没变,我Xmn1g,感觉From.To应该都是102.4M才对,现在是102.375M. 执行命令 jstat -gc pid 1s 1 结果: 发现很奇怪,的确和我们相信的不一样,我觉得只有源码可以告诉我们他做了啥.查看源码: 执行上面的例子代码 public static void main(String[] args) {…
http://www.jianshu.com/u/3def157aab07?utm_medium=note-author-link&utm_source=mobile…
通过一段时间的.NET学习,我发现英文不好是我的软肋~我觉得好好补习一下英文单词水平.可是要背哪些单词呢? 经过一段时间的整理,终于整理出来了一套比较完整的.NET程序员必备单词文档.单词加详细说明.现在分享给大家~希望能给大家帮助~~~!下面是word截图.为了方便阅读我已经给制作成了PDF. 下载地址:http://yunpan.cn/cd6JQeLZfxS7A  访问密码 52cb…
1.复合赋值运算符 += -= *= /= %= 2.关系运算符  > < >= <= == !=  由关系运算符连接的表达式我们称之为关系表达式.  每一个表达式都可以求解出一个定值. 3.bool类型    我们在c#中使用bool类型来描述对或者错.    bool类型只有两个值,一个是true,一个是false 4.逻辑运算符  逻辑与 &&  (shift+7)   逻辑或 ||  (shift+顿号)  逻辑非 ! (一定是英文半角的感叹号)    对于…
1.加号的使用  在我们c#当中,如果想要两个字符串相连接,那么我们可以使用+号连接.  加号两边如果有一边是字符串,那么此时字符串起到了一个连接的作用.  如果加号两遍都是数字,那么加号起到一个相加的作用. 2.占位符    规则:先挖个坑,再填个坑.    {0}:占位符都是从0开始,依次递增      注意:你挖了几个坑,就填几个坑,多填了没效果.    但是,如果你少填了,程序抛出异常.    我们在输出的时候,是按照挖坑的顺序输出,而不是按照填坑的顺序输出. 3.异常  所谓异常指的就…
1.Net平台和C#编程语言的概念 2.桌面应用程序: 我们要使用桌面应用程序,必须要安装该应用程序的客户端. winform应用程序. Application:应用程序 Internet:互联网应用程序 Asp.Net 3.应用程序的两种模式: c/s:客户端/服务器:桌面应用程序,必须要安装一个客户端 b/s:浏览器/服务器:internet应用程序,只需要安装一个浏览器 4.你常用的IDE是什么? 5.打开VS --->双击快捷方式 --->windows键+R:调用运行,在运行中输入d…
                Mysql php阶段将数据库分为三个阶 基础阶段: mysql数据库的基本操作(增删改查),以及一些高级操作(视图,触发器,函数,存储过程等),PHP操作没有sql数据库. 优化阶段: 如何提高数据库效率,如索引,分表等. 部署阶段: 如何搭建真实的系统环境,如服务集群,负载均衡. 数据库基础 什么是数据库: 数据库:database ,存储数据的仓库(高效的存储和处理数据库的介质如磁盘.内存) 数据库分类: 1,关系型数据库:(sql型) 2,非关系型数据库(…
## 注释 1. 单行注释 ```java //这是一个注释 ``` 2. 多行注释 ```java /* 这是一个注释 */ ``` 3. 文档注释 ```java /** * * * */ ``` 文档注释是有功能的,它允许你在程序中嵌入关于程序的信息.你可以使用 javadoc 工具软件来生成信息,并输出到HTML文件中. 表格取自菜鸟教程,侵权删 ## 关于注释的彩蛋 ### 直接复制 ```java /*** * ┌─┐ ┌─┐ * ┌──┘ ┴───────┘ ┴──┐ * │ │…
前言 主学信息安全,在编程的路上还是一个孩子,还在一步一步探索,有些东西可能是站在自己的位置思考的,很可能会出现一些啼笑皆非的错误,如果有误,还希望各位斧正. Java安装 jdk的安装 甲骨文官网选择版本下载即可,若速度较慢,则可以选择安全些的国内源下载 环境变量配置:百度即可 IDE的安装 百度即可找到对应的安装方法 第一个Java 通过文本编辑器即可书写一个Java后缀的源码,例如 public class hello{ public static void main(String[] a…
1.DOM 文档对象模型 定义:一个与系统平台和编程语言无关的接口,程序和脚本可以通过这个接口动态的访问和修改文档的内容.结构和样式. 2.Javascript 区分大小写.弱类型语言 变量小写:var temp=12; 函数名:function getMonth(num1,num2)  命名采取驼峰命名法,参数不需定义类型 3.对象:是由一些属性和方法组合在一起而构成的一个数据实体.包含在对象里的数据通过两种方式访问——属性和方法. 属性是隶属于某个特定对象的变量. 方法是只有某个特定对象才能…
描述 题目和答案来自于阿里云大学 - 知乎专栏 题目 现在有如下一段代码 public class Test { public int aMethod() { static int i=0; i++; return i; } public static void main(String args[]) { Test test = new Test(); test.aMethod(); int j = test.aMethod(); System.out.println(j); } } 将产生哪种…
1.PATH环境变量 LANG ——————>变量名字 $LANG ——————>查看变量内容 LANG= ——————>修改变量 系统环境变量填加内容前面使用export export LANG=en_US.UTF- 查看用户环境变量的:echo $变量名 echo $LANG en_US.UTF- 2.linux运行级别 ①查看系统的运行级别:runlevel ②临时修改使用init ③永久修改运行级别,修改/etc/inittab这个配置文件 3.单引号.双引号.不加引号的区别 ①…
强类型语言 所有变量定义后才能使用,区别于js等弱类型语言 数据类型分类 基本类型(primitive type) 引用类型(reference type) 整数类 byte:占1字节 short:占2字节 int:占4字节 long:占8字节 浮点类 float:占4字节 double:占8字节 boolean类 占1位 分true和false 字符类型 占2字节 枚举类型 enum Season{ spring,summer,autumn,winter }; //使用 Season a=sp…
随着博文越来越多,为博客添加一个导航很有必要!本博客将相继开通Java.CloudFoundry.Linux.Ruby等专栏,都会设立目录,希望读者朋友们能更加方便的阅读! 在阅读的过程中有任何问题,请联系:egg. 邮箱:xtfggef@gmail.com    微博:http://weibo.com/xtfggef QQ群:169480361(请在本博文下面留言,验证信息为CSDN id) 博文目录: Java 初级篇   优秀资源 Java之美[从菜鸟到高手演变]之Java学习方法    …
很多Java面试的时候,都会问到有关Java垃圾回收的问题,提到垃圾回收肯定要涉及到JVM内存管理机制,Java语言的执行效率一直被C.C++程序员所嘲笑,其实,事实就是这样,Java在执行效率方面确实很低,一方面,Java语言采用面向对象思想,这也决定了其必然是开发效率高,执行效率低.另一方面,Java语言对程序员做了一个美好的承诺:程序员无需去管理内存,因为JVM有垃圾回收(GC),会去自动进行垃圾回收. 其实不然: 1.垃圾回收并不会按照程序员的要求,随时进行GC. 2.垃圾回收并不会及时…