
Java进阶
文章平均质量分 77
zero__007
这个作者很懒,什么都没留下…
展开
-
OutOfMemoryError: unable to create new native thread
java.lang.OutOfMemoryError共有8种类型,其中java.lang.OutOfMemoryError: unable to create new native thread是很常见的一种,这类错误通常发生在应用试图创建新线程时。可能原因系统内存耗尽,无法为新线程分配内存创建线程数超过了操作系统的限制解决方案1. 排查应用是否创建了过多的线程通过jstack确定应用创建了多少线程?超量创建的线程的堆栈信息是怎样的?谁创建了这些线程?一旦明确了这些问题,便很容易解决。原创 2020-07-24 16:53:03 · 303 阅读 · 0 评论 -
AppCDS
转载自:https://www.jianshu.com/p/faa64050da56 https://www.jianshu.com/p/890196bf529a 什么是 CDS CDS 的全称是 Class-Data Sharing,CDS 的作用是可以让类可以被预处理放到一个归档文件中,后续 Java 程序启动的时候可以直接带上这个归档文件,这样 JVM 可以直接将这个归档...转载 2020-03-04 17:51:37 · 629 阅读 · 0 评论 -
Java堆外内存排查
转载自:https://blog.csdn.net/lycyingO/article/details/80854669 起因 运行在docker上的一个服务,在某个版本之后,占用的内存开始增长,直到docker分配的内存上限,但是并不会OOM。使用ps查看进程使用的内存和虚拟内存 ( Linux内存管理 )。除了虚拟内存比较高达到17GB以外,实际使用的内存RSS也夸张的达到了7GB,远...转载 2019-06-05 15:51:54 · 1963 阅读 · 0 评论 -
javaagent & Instrumentation
转载自:https://blog.csdn.net/productshop/article/details/50623626什么是Instrumentation? Java Instrumentation指的是可以用独立于应用程序之外的代理(agent)程序来监测和协助运行在JVM上的应用程序。这种监测和协助包括但不限于获取JVM运行时状态,替换和修改类定义等。 Java SE5中使用JVM...转载 2019-01-26 13:44:34 · 1140 阅读 · 0 评论 -
深入分析Java方法反射
线上服务器jmap发现 Perm Generation使用量持续增长, 查看dump信息发现有很多sun.reflect.DelegatingClassLoader、sun.reflect.GeneratedConstructorAccessor77。原因是反射调用引起的,类越來越多。 当使用Java反射时,Java虚拟机有两种方法获取被反射的类的信息。它可以使用一个JNI存取器。如果使用...原创 2019-01-02 20:43:43 · 1572 阅读 · 0 评论 -
滑动窗口计数
转载自:http://go12345.iteye.com/blog/1744728 滑动窗口计数有很多使用场景,比如说限流防止系统雪崩。相比计数实现,滑动窗口实现会更加平滑,能自动消除毛刺。 滑动窗口原理是在每次有访问进来时,先判断前N个单位时间内的总访问量是否超过了设置的阈值,并对当前时间片上的请求数+1。 上图每一个格式表示一个固定的时间(比如1s),每个格子一个计数器,转载 2018-02-05 20:06:51 · 7473 阅读 · 0 评论 -
堆外内存之DirectByteBuffer
http://www.jianshu.com/p/007052ee3773堆外内存 堆外内存是相对于堆内内存的一个概念。堆内内存是由JVM所管控的Java进程内存,我们平时在Java中创建的对象都处于堆内内存中,并且它们遵循JVM的内存管理机制,JVM会采用垃圾回收机制统一管理它们的内存。那么堆外内存就是存在于JVM管控之外的一块内存区域,因此它是不受JVM的管控。...转载 2017-09-04 19:49:43 · 652 阅读 · 0 评论 -
基于zookeeper、连接池实现的Thrift服务负载均衡和服务发现
转载自:http://blog.csdn.net/zhu_tianwei/article/details/44115667对于Thrift服务化的改造,主要是客户端,可以从如下几个方面进行: 1.服务端的服务注册,客户端自动发现,无需手工修改配置,这里使用zookeeper,采用curator-recipes工具类进行处理服务的注册与发现。 2.客户端使用连转载 2017-03-31 18:51:01 · 7456 阅读 · 0 评论 -
环形队列的应用
转载自:http://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651959961&idx=1&sn=afec02c8dc6db9445ce40821b5336736&chksm=bd2d07458a5a8e5314560620c240b1c4cf3bbf801fc0ab524bd5e8aa8b8ef036cf755d7eb0f6&mpshare转载 2017-03-22 18:54:06 · 3423 阅读 · 0 评论 -
GC日志中的stop-the-world
通常使用下面的JVM选项在GC日志中打印”stop-the-world”(STW)暂停时间。-XX:+PrintGCApplicationStoppedTime 但是在GC日志中看,会发现有许多这样的暂停时间,时间很短,肯定不是垃圾回收引起的。Total time for which application threads were stopped: 0.0013102 sec原创 2016-12-23 17:29:35 · 5134 阅读 · 0 评论 -
Java解惑
1.奇数性 下面的方法意图确定它那唯一的参数是否是一个奇数。这个方法能够正确运转吗? public static boolean isOdd(int i){ return i % 2 == 1; } 奇数可以被定义为被 2 整除余数为 1 的整数。表达式 i % 2 计算的是 i 整除 2时所产生的余原创 2015-07-12 21:23:16 · 453 阅读 · 0 评论 -
Java代码性能优化
1、尽可能使用局部变量 调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中速度较快,其他变量,如静态变量、实例变量等,都在堆中创建,速度较慢。另外,栈中创建的变量,随着方法的运行结束,这些内容就没了,不需要额外的垃圾回收。2、尽量减少对变量的重复计算 明确一个概念,对方法的调用,即使方法中只有一句语句,也是有消耗的,包括创建栈帧、调用方法时保护现场、原创 2015-11-03 15:27:48 · 651 阅读 · 0 评论 -
Preparedstatement和Statement的区别
PreparedStatement是预编译的, Preparedstatement支持批处理,对于批量处理可以大大提高效率。 Statement每次执行sql语句,相关数据库都要执行sql语句的编译。对于只执行一次的SQL语句选择Statement是最好的。因为PreparedStatement对象的开销比Statement大,对于一次性操作并不会带来额外的好处。相反,如果SQL语原创 2015-11-28 18:33:41 · 4814 阅读 · 0 评论 -
一致性hash算法
转载自:http://blog.csdn.net/lovingprince/article/details/4645448 http://blog.csdn.net/caigen1988/article/details/7708806 http://blog.csdn.net/cywosp/article/details/23397179转载 2015-07-10 14:11:58 · 902 阅读 · 0 评论 -
hash算法学习
转载自:http://blog.csdn.net/sangyongjia/article/details/37312851 http://my.oschina.net/YeanXu/blog/15613实现一个hash算法时需要思考一下三个问题: 第一:hash函数的选择。 第二:hash冲突的解决办法。 第三:装填因转载 2015-07-10 14:08:02 · 461 阅读 · 0 评论