java-jvm&性能&原理
文章平均质量分 76
王新春
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java.lang.ref.Reference
2013-10-10 11:44:52 · 148 阅读 · 0 评论 -
java-jvm好文收集
fenglibing/article/details/6411953jstack:http://www.cnblogs.com/zhengyun_ustc/archive/2013/01/06/dumpanalysis.html垃圾回收优化案例:parallel scavenge / parallel oldhttp://itindex.net/detail/47030-cms-gc-%E9%97%AE%E9%A2%98 cmshttp://moon-walker.iteye.com/b原创 2016-08-05 10:50:41 · 90 阅读 · 0 评论 -
java-jvm-jstack
原创 2016-08-05 11:07:58 · 131 阅读 · 0 评论 -
java-jvm-cpu (cpu)高问题排查
AD,tid,time|sort -k1 -nr|head -15方案二: top -H -p pid 这样是是看pid对应下的线程对应的的cpu 占用率,可以定位到cpu高的线程 (这个图是后补的)3、收集进程的堆栈信息上下文jstack -F pid >data.txt 即可把线程的堆栈信息统计到 文件中 注意:jstack -F 这个 -F参数,最好不加,因为加上-F打印的线程挂起的栈信息4、根据线程id定位代码查找22328 线程对应的线程:原创 2017-03-28 21:07:17 · 201 阅读 · 0 评论 -
java-jvm-jstack-线程状态
2017-03-31 14:42:47 · 175 阅读 · 0 评论 -
java-jvm-jstack-(监视器和锁的概念)
0007d5df4970所以导致了死锁的出现两个线程都有有一句: java.lang.Thread.State: BLOCKED (on object monitor)表明:两个线程都阻塞在了 对应正在操作对象的object monitor上(是因为对象 被另外一个线程获加锁成功,并占有object monitor)那object monitor 和 lock 有什么关系和区别? 1、object monitor 是任何一个对象都有的内置的数据结构,它是用来协调使用当前对象的多个线程2017-04-06 16:52:18 · 175 阅读 · 0 评论 -
iotop&iostat (load高 IO高的问题排查)
执行cpu us sy 显示都不高,并且wa 占用高,说明系统在等待大量的io操作 1、安装iotopsudo yum install iotop 2、top命令显示 从top命令可以看出,系统load 6.43,对于4 cpu的系统来说,已经是超载,另外 wa 60%,可以确定系统的线程在等待io操作其中 线程 2492 比较可疑top -H -p 2492 3、iostatiostat ALL :可以查阅 那个磁盘读写频繁 4、sudo i原创 2017-04-27 20:40:41 · 867 阅读 · 0 评论 -
大量异常带来性能的影响
n(String[] args) { long t1 = System.currentTimeMillis(); testParseWithException(100000); System.out.println(System.currentTimeMillis() - t1); t1 = System.currentTimeMillis(); testParse(100000); System.out.println(System.curren2017-05-09 19:08:40 · 182 阅读 · 0 评论 -
jvm-gc 日志解读【转载】
原创 2017-05-14 17:34:33 · 141 阅读 · 0 评论 -
java-jvm-jinfo
2017-05-14 20:57:35 · 144 阅读 · 0 评论 -
java-jvm-jhat
#instances #bytes class name---------------------------------------------- 1: 38445 5597736 <constMethodKlass> 2: 38445 5237288 <methodKlass> 3: 3500 374原创 2017-05-14 21:04:57 · 189 阅读 · 0 评论 -
垃圾回收算法&STOP The World
原创 2017-05-15 11:50:40 · 882 阅读 · 0 评论 -
java-jvm-jstat
原创 2016-08-05 10:30:22 · 117 阅读 · 0 评论 -
java-jvm-jmap(高内存排查)
2016-07-29 13:51:28 · 304 阅读 · 0 评论 -
java-jvm-jps
2016-07-29 13:42:34 · 115 阅读 · 0 评论 -
ClassLoader与资源文件加载
2014-07-05 01:55:52 · 113 阅读 · 0 评论 -
jvm之调优理论篇
/www.360doc.com/content/14/0508/18/11965070_375867925.shtml http://www.cnblogs.com/dingyingsi/p/3760447.html jvm的组成: java内存组成:堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap m2015-03-06 12:11:39 · 135 阅读 · 0 评论 -
jvm之内存申请过程分析
[/url]内存申请过程1、JVM会试图为相关Java对象在Eden中初始化一块内存区域;2、当Eden空间足够时,内存申请结束。否则到下一步;3、JVM试图释放在Eden中所有不活跃的对象(minor collection),释放后若Eden空间仍然不足以放入新对象,则试图将部分Eden中活跃对象放入Survivor区;4、Survivor区被用来作为Eden及old的中间交换区域,如果Survivor不足以放置eden区的对象,如果old区有空闲,那么直接放置在old区,Surv2015-03-07 15:58:08 · 333 阅读 · 0 评论 -
jvm之String 在jvm中分配
code]/** * JVM对于字符串常量的"+"号连接,将程序编译期,JVM就将常量字符串的"+"连接优化为连接后的值,拿"a" + 1来说,经编译器优化后在class中就已经是a1。在编译期其字符串常量的值就确定下来,故上面程序最终的结果都为true。 */ @Test public void testConstant() { if (true) { String a = "a1";2015-03-09 20:50:14 · 108 阅读 · 0 评论 -
jvm之String常量池的优化
的常量区。[/b]关于String.intern()的使用需要注意以下两点:1、对于日常工作中List中的数据对象,如果对象的某个属性是String,比如性别,国家等重复率较高的字符串取值,如果放入常量区,会节省大量的内存空间。2、jvm的常量池的的搜索比较慢,速度甚至比ConcurrentHashMap 慢了不少。证明:JVM参数配置:[code="java"]-Xmx200M -Xms200M -Xmn100M -XX:SurvivorRatio=2015-03-09 21:44:34 · 160 阅读 · 0 评论 -
java-Runtime钩子回调
2015-03-09 22:09:39 · 198 阅读 · 0 评论 -
ClassLoader-学习
M的。 在java语言中,是个非常重要的概念。平时我们接触不太多。但是在以下领域我们需要了解ClassLoader的特性:1、热部署。2、在类加载阶段,修改字节码,增加特殊功能。(一般用的比较少)3、jvm通过特定的类加载器实现安全性的要求JAVA程序对类的使用方式可分为两种:主动使用被动使用所有的Java虚拟机实现必须在每个类或接口被Java程序“首次主动使用”时才初始化他们主动使用的情况:1、创建类的实例 2、访问某个类或者接口的静态变量,或者对其进行赋值3、调用类的静态方法4、反射5、初始化一个类的子2015-04-05 19:03:19 · 128 阅读 · 0 评论 -
ClassLoader-热替换
lassLoader在起作用,一个jsp对应一个ClassLoader,一旦jsp修改,就需要卸载原来加载此jsp(先是被转换为java文件,然后被编译为class文件)的ClassLoader ,然后重新生成一个ClassLoader来加载jsp对应的class文件。最近参与到了一个抓取垂直网站报价数据的设计,由于抓取的网站有上千之多,并且每天都有大量的网站更新,导致原来的java解析代码必须修改以适应原来的功能。数据抓取有两步:1、抓取数据页面(html,或者json串)2、解析数据这样我们的系统,对每2015-04-05 20:27:22 · 132 阅读 · 0 评论 -
ClassLoader-线程上下文类加载器
.Thread中的方法 getContextClassLoader()和 setContextClassLoader(ClassLoader cl)用来获取和设置线程的上下文类加载器。[b]如果没有通过 setContextClassLoader(ClassLoader cl)方法进行设置的话,线程将继承其父线程的上下文类加载器。[/b]ava 应用运行的初始线程的上下文类加载器是系统类加载器。在线程中运行的代码可以通过此类加载器来加载类和资源。[code="java"]/*原创 2015-04-16 10:54:33 · 106 阅读 · 0 评论 -
垃圾回收器的分类
NewGC(新生代使用并行收集器(ParNew收集器),老年代使用串行回收收集器(Serial Old))-XX:+UseConcMarkSweepGC(新生代使用多线程收集器,老年代->CMS)。-XX:+UseParallelOldGC(新生代,老年代都使用并行回收收集器)-XX:+UseParallelGC(新生代使用并行回收收集器,老年代使用串行收集器)garbage-first heap:是使用-XX:+UseG1GC(G1收集器)搭配:[img]原创 2016-03-29 22:23:58 · 119 阅读 · 0 评论 -
OutOfMemoryError溢出
static class OOMObject { } public static void main(String[] args) { List<OOMObject> list = new ArrayList<OOMObject>(); while (true) { list.add(new OOMObject()); } } } 运行结果:ja原创 2016-03-29 23:29:42 · 130 阅读 · 0 评论 -
垃圾回收算法详解
法用来判定一个对象是否为垃圾。1. 引用计数算法给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。优点是简单,高效,现在的objective-c用的就是这种算法。缺点是很难处理循环引用,比如图中相互引用的两个对象则无法释放。这个缺点很致命,有人可能会问,那objective-c不是用的好好的吗?我个人并没有觉得objective-c好好的处理了这个循环引用问题,它其实是把这个问题抛给了开发者。2. 可达原创 2017-05-17 16:42:39 · 181 阅读 · 0 评论
分享