java-jvm&性能&原理
文章平均质量分 74
iteye_5504
这个作者很懒,什么都没留下…
展开
-
java.lang.ref.Reference
java.lang.ref.* 包 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。更准确的说是通过引用对象类来窥探对象被垃圾回收器处理的状态。 程序可以使用一个引用对象来维持对另外某一对象的引用,但所采用的方式是使后者仍然可以被回收器在特定的场景下(内存不足,gc操作等)回收。同时程序还可以安排在回收器确定某一给定对象的可到达性已经更改之后的某个时间得到通知(初始化引用对象时 指定引...2013-10-10 11:44:52 · 187 阅读 · 0 评论 -
iotop&iostat (load高 IO高的问题排查)
目标:使用iotop&top&jstack命令定位 io高的应用以及线程信息实现:load过高但是cpu占用率低的模拟与验证一般load高,说明系统大量的线程在等待执行cpu us sy 显示都不高,并且wa 占用高,说明系统在等待大量的io操作 1、安装iotopsudo yum install iotop 2、top命令显示 从to...原创 2017-04-27 20:40:41 · 2903 阅读 · 0 评论 -
jvm之调优理论篇
----------~开篇分享一句话:【纸上得来终觉浅,绝知此事要躬行】~--------------------------------------- 实战分析: http://wangxinchun.iteye.com/blog/2190330 http://www.360doc.com/content/14/0508/18/11965070_375867925.shtml http://...2015-03-06 12:11:39 · 91 阅读 · 0 评论 -
jvm之内存申请过程分析
----------~开篇分享一句话:【纸上得来终觉浅,绝知此事要躬行】~--------------------------------------- 前置了解知识:[url]http://wangxinchun.iteye.com/blog/2189321[/url]内存申请过程1、JVM会试图为相关Java对象在Eden中初始化一块内存区域;2、当Eden空间足够时,内存...2015-03-07 15:58:08 · 538 阅读 · 0 评论 -
jvm之String 在jvm中分配
----------~开篇分享一句话:【纸上得来终觉浅,绝知此事要躬行】~---------------------------------------[b]关于String的些许探讨[/b]首先看下面的案例:[code]/** * JVM对于字符串常量的"+"号连接,将程序编译期,JVM就将常量字符串的"+"连接优化为连接后的值,拿"a" + 1来说,经编译器优化后在c...2015-03-09 20:50:14 · 390 阅读 · 0 评论 -
jvm之String常量池的优化
----------~开篇分享一句话:【纸上得来终觉浅,绝知此事要躬行】~---------------------------------------[b]String.intern() 方法会自动把String放到jvm的PSPermGen的常量区。[/b]关于String.intern()的使用需要注意以下两点:1、对于日常工作中List中的数据对象,如果对象的某个属...2015-03-09 21:44:34 · 393 阅读 · 0 评论 -
java-Runtime钩子回调
----------~开篇分享一句话:【纸上得来终觉浅,绝知此事要躬行】~--------------------------------------- 在线上Java程序中经常遇到进程程挂掉,一些状态没有正确的保存下来,这时候就需要在JVM关掉的时候执行一些清理现场的代码。Java中得ShutdownHook提供了比较好的方案。JDK在1.3之后提供了Java Runtime.addS...2015-03-09 22:09:39 · 246 阅读 · 0 评论 -
ClassLoader-学习
相关文章:https://www.ibm.com/developerworks/cn/java/j-lo-classloader/#downloadhttp://blog.csdn.net/zhoudaxia/article/details/35897057ClassLoader:类装载器是用来把类(class)装载进JVM的。 在java语言中,是个非常重要的概念。平时我们接触不太多。但是在...2015-04-05 19:03:19 · 86 阅读 · 0 评论 -
ClassLoader-热替换
https://www.ibm.com/developerworks/cn/java/l-multithreading/接自定义类加载器的理论,讲一个实践。我们都有使用jsp的经验,为什么jsp可以修改后直接生效?就是ClassLoader在起作用,一个jsp对应一个ClassLoader,一旦jsp修改,就需要卸载原来加载此jsp(先是被转换为java文件,然后被编译为class文件)的...2015-04-05 20:27:22 · 263 阅读 · 0 评论 -
java-jvm-jstack-(监视器和锁的概念)
下面这段jstack的栈信息里,有一个死锁其中:Thread-1 持有 0x00000007d5df4970,等待获取:0x00000007d5df4960Thread-0 持有 0x00000007d5df4960,等待获取:0x00000007d5df4970所以导致了死锁的出现两个线程都有有一句: java.lang.Thread.State: BLOCKED (...2017-04-06 16:52:18 · 332 阅读 · 0 评论 -
java-jvm-jstack-线程状态
常见的线程状态:RUNNABLE:正在执行的线程注意:这里执行是针对jvm来说的,并非真的在cpu上执行,这要看操作系统处理器是否有机会 BLOCKED:阻塞的线程注意:阻塞的线程一般是拿不到监视器锁(a monitor lock),比如:synchronized block/method,ReentrantLock.lock() jstack一般显示为:...2017-03-31 14:42:47 · 188 阅读 · 0 评论 -
java-jvm-cpu (cpu)高问题排查
1、通过top命令发现 cpu高的进程根据top命令,发现PID 为22143的Java进程占用CPU 17.8%2、根据cpu高的进程,查找引起cpu高的线程命令:ps -mp 22143 -o THREAD,tid,time|sort -k1 -nr|head -15方案二: top -H -p pid 这样是是看pid对应下的线程对应的的cpu 占用率,可以定位到c...原创 2017-03-28 21:07:17 · 867 阅读 · 0 评论 -
垃圾回收器的分类
[b]基础:[/b]串行收集器:DefNew:是使用-XX:+UseSerialGC(新生代(Serial收集器),老年代(Serial Old收集器)都使用串行回收收集器)并行收集器:-XX:+UseParNewGC(新生代使用并行收集器(ParNew收集器),老年代使用串行回收收集器(Serial Old))-XX:+UseConcMarkSweepGC(新生代使用多线...原创 2016-03-29 22:23:58 · 168 阅读 · 0 评论 -
OutOfMemoryError溢出
Java堆溢出: java.lang.OutOfMemoryError: Java heap space /** * VM Args:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError * @author zzm */ ublic class HeapOOM { static class OOMObject { ...原创 2016-03-29 23:29:42 · 136 阅读 · 0 评论 -
java-jvm-jps
[size=x-large]jsp[/size]-q 只显示pid,不显示class名称,jar文件名和传递给main 方法的参数-m 输出传递给main 方法的参数,在嵌入式jvm上可能是null-l 输出应用程序main class的完整package名 或者 应用程序的jar文件完整路径名[code="java"]sudo jps -m[/code]274...2016-07-29 13:42:34 · 81 阅读 · 0 评论 -
ClassLoader与资源文件加载
深刻理解java的配置环境以及java的执行过程对做好开发是十分重要的。类加载器ClassLoader 便是其中非常重要的概念。本文简单并演示Java类加载器的一些特点,不妥之处,敬请指出。背景:A.java 引用 了B.jar 中的一个文件,B.jar 包中的C.class 使用了C.class.getResourceAsStream("/jdbc.xml")获取资源文件...2014-07-05 01:55:52 · 324 阅读 · 0 评论 -
java-jvm-jmap(高内存排查)
[b]功能:打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)[/b]-dump:[live,]format=b,file= 使用hprof二进制形式,输出jvm的heap内容到文件=. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件. -finalizerinfo 打印正等候回收的对象的信息.-heap ...2016-07-29 13:51:28 · 735 阅读 · 0 评论 -
java-jvm-jstat
stat用于监控基于HotSpot的JVM,对其堆的使用情况进行实时的命令行的统计,使用jstat我们可以对指定的JVM做如下监控:- 类的加载及卸载情况- 查看新生代、老生代及持久代的容量及使用情况- 查看新生代、老生代及持久代的垃圾收集情况,包括垃圾回收的次数及垃圾回收所占用的时间- 查看新生代中Eden区及Survior区中容量及分配情况等使用语法: jstat ...原创 2016-08-05 10:30:22 · 132 阅读 · 0 评论 -
java-jvm好文收集
非常详细GC学习笔记http://blog.csdn.net/fenglibing/article/details/6321453GC学习必备知识http://blog.csdn.net/xifeijian/article/details/17534233jvm监控命令大全http://blog.csdn.net/fenglibing/article/details/6411953jstack...原创 2016-08-05 10:50:41 · 155 阅读 · 0 评论 -
java-jvm-jstack
jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式:jstack [-l] pidjstack [ option ] [server-id@]remote-hostname-or-IP基本参数:-F当’jstack [-l] pid’没有相应...原创 2016-08-05 11:07:58 · 105 阅读 · 0 评论 -
ClassLoader-线程上下文类加载器
线程上下文类加载器 :[url]http://blog.csdn.net/zhoudaxia/article/details/35897057[/url]线程上下文类加载器(context class loader)是从 JDK 1.2 开始引入的。类 java.lang.Thread中的方法 getContextClassLoader()和 setContextClassLoader(C...原创 2015-04-16 10:54:33 · 134 阅读 · 0 评论