`
文章列表
1. 内核初始化:     * 内核建立好内核页目录页表数据库,假设物理内存大小为len,则建立了[3G--3G+len]::[0--len]这样的虚地址vaddr和物理地址paddr的线性对应关系;     * 内核建立一个page数组,page数组和物理页面系列完全是线性对应,page用来管理该物理页面状态,每个物理页面的虚地址保存在page->virtual中;     * 内核建立好一个free_list,将没有使用的物理页面对应的page放入其中,已经使用的就不用放入了; 2. 内核模块申请内存vaddr = get_free_pages(mask,order): ...
“new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。 new的过程 当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如下一个类A: class A {    int i; public:    A(int _i) :i(_i*_i) {}    void Say()  { printf("i=%dn", i); } }; //调用new: ...
本文们针 Linux 线程编程主特性总结出 5 条经验,以改善 Linux 线程编程习惯避免其陷阱。本文,们穿插些 Windows 编程例以比 Linux 特性,以加深读印象。    背景    Linux 线程程序相应其(比如 Windows)线程 API 有些细微隐晦差别。不注意这些 Linux 些陷阱,常常致程序问题不穷,死锁不断。本文们从 5 个方面总结出 Linux 线程编程问题,并分别引出相关改善经验,以避免这些陷阱。们希望这些经验以帮助读们能更好更快熟悉 Linux 线程编程。    们假设读都已经熟悉 Linux 基本线程编程 Pthread 库 API 。其第三方以线程编 ...
java是多线程的,所以类或者接口的初始化要求仔细的同步,因为同时某个别的线程可能正在试图初始化同一个类或者接口,也有可能作为类或者接口初始化的一部分,要求递归地初始化该类或接口。   要了解类的初始化过程 ...
栈和局部变量操作 将常量压入栈的指令 aconst_null         将null对象引用压入栈 iconst_m1         将int类型常量-1压入栈 iconst_0         将int类型常量0压入栈 iconst_1         将int类型常量1压入栈 iconst_2         ...
关于JVM的一个常识是:如果对象被意外地持有很容易造成内存泄漏,而如果同时又在不停地生成新对象,就有很大的机率造成内存溢出。通常情况下,这种溢出会导致JVM抛出OutOfMemoryError,然后JVM挂起。 可是来试试下面的代码,真是让人有点诧异,分别在JDK1.4、JDK5、JDK6上都表现一致。 package crash; public class JVMCrashTest {     public static void main(String[] args) {         try {             testCrash();         } c ...
当我们的程序崩溃时,内核有可能把该程序当前内存映射到core文件里,方便程序员找到程序出现问题的地方。最常出现的,几乎所有C程序员都出现过的错误就是“段错误”了。也是最难查出问题原因的一个错误。下面我们就针对“段错误”来分析core文件的产生、以及我们如何利用core文件找到出现崩溃的地方。 何谓core文件 当一个程序崩溃时,在进程当前工作目录的core文件中复制了该进程的存储图像。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。 当程序接收到以下UNIX信号会产生core文件: 名字 说明 ANSI C  POSIX.1 SVR4  4.3+BSD 缺省 ...
我们在搞性能测试的时候,对后台服务器的CPU利用率监控是一个常用的手段。服务器的CPU利用率高,则表明服务器很繁忙。如果前台响应时间越来越大,而后台CPU利用率始终上不去,说明在某个地方有瓶颈了,系统需要调优。这 ...

linux cpu负载原理

linux cpu负载原理 内核分析 待补

jvm 初始化

    博客分类:
  • jvm
void vm_init_globals() {   check_ThreadShadow();   basic_types_init();   eventlog_init();   mutex_init();   chunkpool_init();   perfMemory_init(); } jint init_globals() {   HandleMark hm;   management_init();   vtune_init();   bytecodes_init();   classLoader_init();   codeCache_init();   VM_Version ...

jvm gc

    博客分类:
  • jvm
jvm gc

jvm exception

    博客分类:
  • jvm
jvm exception

jvm method invoke

    博客分类:
  • jvm
JVM 
jvm method invoke

jvm interpreter

    博客分类:
  • jvm
jvm interpreter 解释器的初始化 JNI_CreateJavaVM | |-->  Threads::create_vm    |    |--> init_globals       |       |-->interpreter_init          |          |-->AbstractInterpreter::initialize            |            |-->TemplateTable::initialize 一个解释器就是不断地读取当前的指令,然后是一个大的switch语句。 传统解释器技术,是指对 ...
jvm运行时数据结构
Global site tag (gtag.js) - Google Analytics