- 浏览: 103233 次
- 性别:
- 来自: 武汉
最新评论
-
hatedance:
这个bytecodeInterpreter应该已经被遗弃了,现 ...
openjdk中的同步代码 -
Mr_lee_2012:
是啊,好文章,谢过。
java栈帧中的对象引用 -
ZangXT:
有些性能要求比较高的系统会考虑这一点的,典型的如JPC,尽量避 ...
java中调用接口及调用继承类效率区别 -
tinywind:
你有没有注意到load_classfile开始定义了个Reso ...
hotsphot中的ResourceArea -
qianli-2010:
java中调用接口及调用继承类效率区别
文章列表
DB2通用数据库性能调整的常用方法
Agenda
统计值更新--runstats 调整Buffer pool 调整日志缓冲区大小 应用程序堆大小 排序堆大小和排序堆值 代理程序的数目 锁 活动应用程序的最大数目 页清除程序的数目 I/O服务器的 ...
- 2008-11-19 14:13
- 浏览 7129
- 评论(0)
DB2十佳性能调优技巧 Document #: 2407544E28000
Body: [标题]
DB2十佳性能调优技巧
作 者 Scott Hayes Database-Guys Inc. 总裁,DB2 UDB Advanced Certified Technical Expert 2003 年 8 月
内容提要:
本文总结了针对DB2性能调优的十个宝典,对于DBA非常有帮助.
说明:
每隔大约几个星期,我们就会接到苦恼的 DBA 们的电话,抱怨有关性能的问题。“我们 Web 站点速度慢得像蜗牛一样”,他们叫苦道,“我们正在失去客户,情况严重。你能帮忙吗?”为了回答这些问 ...
- 2008-11-19 13:46
- 浏览 1108
- 评论(0)
分析 DB2 for Linux, UNIX, and Windows 中的锁等待情形
使用 db2pd 工具确定并发问题的原因
文档选项
<script type="text/javascript"></script>
<noscript></noscript>
- 2008-11-19 13:37
- 浏览 2298
- 评论(0)
在ClassLoader::load_classfile中,下面的代码引起了我的注意。
ClassFileStream* stream = NULL;
int classpath_index = 0; { PerfTraceTime vmtimer(perf_accumulated_time()); ClassPathEntry* e = _first_entry; while ...
看看openjdk中的athrow处理流程
{
oop except_oop = STACK_OBJECT(-1); //从栈中弹出异常的引用
CHECK_NULL(except_oop); //检查异常引用是否为空
THREAD->set_pending_exception(except_oop, NULL, 0); goto handle_exception; //处理异常执行代码
}
处理异常的代码handle_exception
...
Object.java类中notify调用的是share/vm/prims/jvm.cpp中的JVM_MonitorNotify。
void JVM_MonitorNotify(JNIEnv* env, jobject handle)
{
Handle obj(THREAD, JNIHandles::resolve_non_null(handle));
ObjectSynchronizer::notify(obj, CHECK);
}
看看ObjectSynchronizer::notify方法
...
- 2008-10-08 10:48
- 浏览 2284
- 评论(0)
Object.wait调用的是share/vm/prims/jvm.cpp中的JVM_MonitorWait。
void JVM_MonitorWait(JNIEnv* env, jobject handle, jlong ms)
{
Handle obj(THREAD, JNIHandles::resolve_non_null(handle));
Ob ...
自定义类加载器继承ClassLoader类,使用自定义类加载器是通过loadClass方法实现。
protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException { // 查找类是否已经加载
Class c = findLoadedClass(name);
if (c == null) {
try { if (parent != null) { / ...
- 2008-09-17 15:43
- 浏览 1458
- 评论(0)
工作以来,陆陆续续看了一些代码,从中是学到了不少知识,也更加意识到自己的无知。一直想进一步提高自己,就象这次看openjdk,只能囫囵吞枣,知道个皮毛,但也获取了不少的知识。从openjdk里面,涉及到了很多知识,操作系统、编译原理、数据结构、设计模式、汇编语言。 有很多技巧值到学习。把庞大的数据结构是组织在一起的,没有深厚的知识底蕴是不可能的。openjdk里面所用到的知识,感觉并没有很高深的知识,好像都知道,好像都会,可自己却写不出来,知识和技术还是有区别的。我辈只能仰望这些牛人了。 一直想提高自己,但提高很慢,这几年的经历来,感觉也下了些苦功夫,却不得法,也许是天资愚 ...
在java虚拟机中的方法同步synchronized,是通过使用monitorenter和monitorexit这两个操作码,当虚拟机遇到monitorenter的时候,它会获得栈中objectref所引用的对象的锁。如果线程已经拥有那个对象的锁,锁的计数器加1,线程中每个monitorexit会引起计数器减1,当计数器为0时候,监视器就释放了。
先看看openjdk中的monitorenter代码(bytecodeInterpreter.cpp)
{
if (entry != NULL) { //获取一 ...
David Cutler,VMS和Windows NT的首席设计师,1988年去微软前号称硅谷最牛的内核开发人员,在操作系统领域摸爬滚打几十年,其间的经历就像一部标准的外省青年奋斗记。
与许多计算机界的前辈牛人们一样,David Cutler并不是计算机科班出生,他在大学拿的是数学学士,主攻物理,满怀热情地想成为一位建造事物的工程师。所以,毕业后他进入杜邦公司从事材料测试。一次偶然的机会,David被指派负责在DEC的计算机上运行模拟程序,还为多台单机实时系统编写中央控制程序,调度各种任务、监控系统运作。这个经历不仅丰富了Da ...
- 2008-09-12 15:11
- 浏览 3607
- 评论(0)
openjdk中的java栈帧是如何布置的呢,在java栈中如果确定变量是一个引用呢,先复习《深入java虚拟机第二版》有关栈帧的内容。
“栈帧由三部分组成:局部变量区、操作数栈和栈数据区。局部变量区和操作数栈要视对应的方法而定,他们是按字长计算的。编译器在编译时就确定了这些值并放在class文件中,而栈数据区的大小依赖于具体实现。
当虚拟机调用一个java方法时,它从对应的类的类型信息得到局部变量区和操作数栈的大小,并据此分配栈帧内存,并压入java栈中。
局部变量区 java栈帧的局部变量区被组织成一个以字长为单位、从0开 ...
openjdk中的垃圾回收是一个庞大的课题,如何标记活动的对象,就涉及到了堆栈的、常量池的跟踪标记等,非常复杂。在此先做一个初步的分析。
先从System.java中的gc方法开始阅读。
public static void gc() { Runtime.getRuntime().gc(); }
跟踪进去,其实调用到了jvm.cpp里面的JVM_GC(void)
{
if (!DisableExplicitGC) { //如果可以直接进行垃圾回收,则执行下面的一步, -XX:+DisableExpl ...
openjdk中周期线程为WatcherThread,在
jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) {
............
if (PeriodicTask::num_tasks() > 0) { Wa ...
下面是转自一位朋友的博客。
有相信就有奇迹!你,相信吗?一只肥胖的看不见自己脚尖的熊猫,一只以买面条为生的熊猫想成为武林大师,行走江湖,除暴安良。是的,除非发生奇迹!但是,这就是熊猫阿宝的梦想 ...
- 2008-09-09 15:47
- 浏览 759
- 评论(0)