Java Thread &Memory Note
http://sslaowan.iteye.com/blog/1450671
top -p pid -H see jvm thread on linux.I read the source of the jvm,and found jvm create threads using NPTL under Linux2.6+.
pstree pid see stat jvm count of thread.
jmap -histo vmid | jmap -histo:live vmid
jstack vmid
为什么会"well-known file is not secure" ?
http://lkf520java.iteye.com/blog/1560686
http://stackoverflow.com/questions/9100149/jstack-well-known-file-is-not-secure?rq=1
最近一段时间经常使用JDK自带工具jmap和jstack来dump JVM heap和JVM 线程栈的log来分析问题,执行这两个命令当时让我最摸不着头脑的就是碰到这个问题:well-known file is not secure
eg:
上网google了一把,在stackoverflow上找到答案:http://stackoverflow.com/questions/9100149/jstack-well-known-file-is-not-secure?rq=1,大概意思是: 我们可以在机器上找到 /tmp/hsperfdata_$USER/$PID一个这样的文件,当我们执行jmap或者jstack出现上叙信息时,先检查执行该命令的用户是否和hsperfdata_$USER这个文件所属的用户一致,如果不一致,切换至成一致再执行即可。
nmon_x86_64_rhel54 -f -t -s 10 -c 1000
Bookmark:
Virtual VM http://www.longtask.com/blog/?p=465
JConsole http://simpleframework.net/blog/v/16528.html
JAVA 进程异常高的 CPU 占用率 http://blog.csdn.net/subchen/article/details/5801072
Java多线程编程总结 http://lavasoft.blog.51cto.com/62575/27069
Linux基础(7)-linux管理监控(pstree,top) http://www.lifeba.org/arch/linux_pstree_top.html
top命令中的交互命令,shift+p按CPU排序,shift+m按内存使用排序,shift+t 按CPU用时排序,shift+n按PID排序 http://blog.163.com/xychenbaihu@yeah/blog/static/1322296552012017105732762/
java:找出占用CPU资源最多的那个线程(HOW TO) http://wenyue.me/blog/382
java 中关于信号的处理在linux下的实现 http://blog.csdn.net/raintungli/article/details/7178472
sdfsfd
package com.javaeye.lindows.thread; public class YieldTest implements Runnable { public void run() { synchronized(this) { for(int i=0;i<50;i++) { if(i==25) { try { wait(5000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println(i); } } } public synchronized void sayHello() throws InterruptedException { for(int i=0;i<20;i++) { if(i==10) { Thread.yield(); } System.out.println("hello:"+i); } notifyAll(); } public static void main(String[] args) throws InterruptedException { YieldTest yt = new YieldTest(); Thread t = new Thread(yt); t.start(); Thread.yield(); yt.sayHello(); } }
sadfff
控制任务管理器CPU曲线(Java实现)
http://blog.csdn.net/taizhoufox/article/details/4664734
如何让windows任务管理器实现你想要的曲线呢,下午查了下资料,自己动手实践了一下。思路很简单,CPU使用记录的数据来源就是CPU的使用率,只要让它一会忙(执行循环),一会闲(sleep),最终得到(每周期执行时间/一个周期)就能得到一个数字,将这些离散的数字连接起来,就是曲线图了。
画直线和画正弦都还好,只是后来到了加速图像显示的时候,出现一个图形如下图
http://dl2.iteye.com/upload/attachment/0103/4781/fb66a0f1-940f-3c29-b3b9-f7cb0f7b9d05.jpg
很是奇怪,到底是什么原因呢?肯定是跟任务管理器CPU曲线的刷新率相关的。
假设刷新时间为1S,
那么第三个程序在的flushtime在小于1000的情况下可以起到控制图像的作用(小于1000,执行的时间和sleep的时间都会乘上相同的系数,最终的比例还是不会变的)。
如果他它大于1000的话,那么在一段时间,它将得到几个相同的点,然后由于短暂的突变(比如执行时间很长,sleep时间很短,则会出现波谷,执行时间很短,sleep时间很长,则会出现波峰),它又将回到回来的位置,但是总体的形状还是保持原来的基本样式,这应该就能解释上面的图形了吧。。。。
以下是java代码
package system; public class CpuUsage { public static void drawLine(){ int usage = 700; System.out.println("Test Begins..."); while(true){ long start = System.currentTimeMillis(); while(System.currentTimeMillis() - start < usage ); try{ Thread.sleep(1000-usage); }catch(Exception e){ System.out.print(e); } } } public static void drawSin(){ double x = Math.PI / 2; while(true){ //下面这一句+1是因为sinx可能为负数,最大为-1,加上1的话就保证为正了 //*0.5是应为加1之后,最大数可能达到2,为了限制在1以内,所以*0.5 long usage = (long)((Math.sin(x)+1)*0.5*1000); System.out.println(usage); long start = System.currentTimeMillis(); while(System.currentTimeMillis() - start < usage); try{ Thread.sleep(1000 - usage); }catch(Exception e){ System.out.print(e); } x += 0.1; } } public static void drawSinSpeedup(){ double x = Math.PI / 2; //加入了刷新时间,可以调控曲线弯曲程度 int flushtime = 5000; while(true){ long usage = (long)((Math.sin(x)+1)*0.5*flushtime); System.out.println(usage); long start = System.currentTimeMillis(); while(System.currentTimeMillis() - start < usage); try{ Thread.sleep(flushtime - usage); }catch(Exception e){ System.out.print(e); } x += 0.1; } } }
end
相关推荐
在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例。
Java中Runnable和Thread的区别
Thread thread = new Thread(runnable); ``` 2. Java中的抽象类和接口有什么区别? 抽象类是一个可以包含抽象方法和非抽象方法的类,它不能被实例化,只能被继承。接口是一个纯粹的抽象类,它只包含抽象方法和...
Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Handler-->"+Thread.currentThread().getId()); System.out.println("Handler-->"+...
RunnableThread1.java
1、Java有两种实现多线程的方式:通过Runnable接口、通过Thread直接实现,请掌握这两种实现方式,并编写示例程序。 2、多线程是并发执行的,交替占有cpu执行,请编写示例程序,并观察输出结果。 3、采用线程同步方法...
它提供了Thread/Runnable/ThreadGroup等一系列封装的类和接口,让程序员可以高效的开发Java多线程应用。为了实现同步,Java提供了synchronize关键字以及object的wait()/notify()机制,可是在简单易用的背后,应藏着...
认识Thread和Runnable 认识Thread的start和run 线程状态说明
1. 写两个线程,一个线程打印1-52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z。 学习线程之间的通信协调关系。 2. 使用 runnable 接口实现按两... 使用继承Thread类方式和实现Runnable接口两种方式实现。
分别用Thread类和Runnable接口实现的阶乘的计算过程及结果的显示(本来一开始设置的不要积分,不知道为啥变得需要积分了,故此调整一下)
在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。接下来通过本文给大家浅析Java中Runnable和Thread的区别,一起看看吧
主要介绍了Java中继承thread类与实现Runnable接口的比较的相关资料,需要的朋友可以参考下
Java中Runnable和Thread的区别分析.rar
我相信对初学者这是很有帮助的,了解两中实现多线程的方法的不同这处
继承Runnable接口,实现run方法,实现我们需要的业务,并且调用new Thread(Runnable)方法,将其包装为一个线程执行 设想这样一种场景,我们需要一个线程池,并且对于线程池中的线程对象,赋予统一的线程优先级、统一...
thread 线程类 实现runnable接口
主要介绍了java 多线程Thread与runnable的区别的相关资料,java线程有两种方法继承thread类与实现runnable接口,下面就提供实例帮助大家理解,需要的朋友可以参考下
主要介绍了Java中Thread 和Runnable的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
java多线程runnable实例,经过测试的,可以直接运行
在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口,下面就拉分别介绍一下这两种方法的优缺点