jvm
文章平均质量分 52
DViewer
求知者
展开
-
JVM性能调优监控工具
摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。 现实企业级Java开发中,有时候我们会碰到下面这些问题:OutOfMemoryError,内存不足转载 2017-01-16 13:57:44 · 595 阅读 · 0 评论 -
类加载
java.lang.ClassLoader.loadClass(String)java.net.URLClassLoader.findClass(String)java.lang.ClassLoader.defineClass(String, ByteBuffer, ProtectionDomain)jdk/src/share/native/java/lang/ClassLoader.cjcl转载 2017-10-06 10:12:28 · 347 阅读 · 0 评论 -
JVM启动分析
通过openjdk的源码来分析jvm的启动过程,针对linux系统。jvm的启动入口main():// openjdk7u/jdk/src/share/bin/main.c/** * main方法 * * argc 参数个数 * argv 参数数组 */int main(int argc, char **argv) { return JLI_Launch(...转载 2017-09-18 20:25:39 · 791 阅读 · 0 评论 -
Java线程源码解析之yield和sleep
概述由于Thread的yield和sleep有一定的相似性,因此放在一起进行分析。yield会释放CPU资源,让优先级更高(至少是相同)的线程获得执行机会;sleep当传入参数为0时,和yield相同;当传入参数大于0时,也是释放CPU资源,当可以让其它任何优先级的线程获得执行机会;假设当前进程只有main线程,当调用yield之后,main线程会继续运行,因为没有比它优先级更高的线程;而转载 2017-09-18 20:00:12 · 946 阅读 · 0 评论 -
JVM方法常用的宏
jdk版本是openjdk-7u6-fcs-src-b24-28_aug_2012interfaceSupport.hpp```c++// Debug class instantiated in JRT_ENTRY and ITR_ENTRY macro.// Can be used to verify properties on enter/exit of the V转载 2017-09-18 19:58:12 · 801 阅读 · 0 评论 -
java native调用
ObjectObjectregisterNatives()getClass()hashCode()equals()clone()toString()notify()notifyAll()wait(long timeout)wait(long timeout, int nanos)wait()finalize()Object就这几个方法,其中除equals和toString,转载 2017-09-18 19:56:47 · 622 阅读 · 0 评论 -
Java虚拟机 对象的创建与OOP-Klass模型
前言在前一篇文章中我们学习了Java虚拟机的结构原理与运行时数据区域,那么我们大概知道了Java虚拟机的内存的概况,那么内存中的数据是如何创建和访问的呢?这篇文章会给你答案。1.对象的创建对象的创建通常是通过new一个对象而已,当虚拟机接收到一个new指令时,它会做如下的操作。(1)判断对象对应的类是否加载、链接、初始化虚拟机接收到一条new指令时,首先会去检查转载 2017-09-15 10:04:47 · 554 阅读 · 0 评论 -
JVM-系统初始化
系统初始化入口是JNI_CreateJavaVM函数,位于YourProjPath/hotspot/src/share/vm/prims/jni.cpp中,hotspot代码中的prims模块里面定义的就是一些外部接口,供JDK或者其他应用程序调用。为了加深印象,我们先复习下JNI_CreateJavaVM函数是怎么来的。入口main函数中创建了运行JavaMain的主线程,在主线程中会调用I转载 2017-09-13 23:03:04 · 1356 阅读 · 0 评论 -
Java虚拟机的启动与程序的执行
这篇文章是从 OpenJDK 源码的角度讲当我们执行了java -classpath . hello之后,java.exe 怎样从 main 函数開始运行,启动虚拟机,并运行字节码中的代码。实验环境要了解一个系统是怎样执行的,光看是不行的,要实际地执行,调试,改动才干对系统的动作方式有所了解。起初我是依照 GitHub 上的一个项目 OpenJDK-Resea转载 2017-09-13 22:46:41 · 942 阅读 · 0 评论 -
jni中的JNICALL的含义
这些宏定义是给编译器用的:/* * @(#)jni_md.h 1.14 03/12/19 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */#ifndef _JAVASOFT转载 2017-12-11 15:45:08 · 4188 阅读 · 0 评论