自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 收藏
  • 关注

转载 Java类的加载

类的加载分为如下几个阶段:我们首先看一下JVM预定义的三种类加载器,当JVM启动的时候,Java缺省开始使用如下三种类型的类加载器:(1)启动(Bootstrap)类加载器:引导类加载器是用C++代码实现的类加载器,它负责将<JAVA_HOME>/lib下面的核心类库或-Xbootclasspath选项指定的jar包等虚拟机识别的类库加载到内...

2019-08-26 20:51:00 205

转载 Java的策略和保护域

参考文章:(1)java之jvm学习笔记十(策略和保护域)https://blog.csdn.net/yfqnihao/article/details/8271415转载于:https://www.cnblogs.com/mazhimazhi/p/11406962.html

2019-08-25 09:33:00 260

转载 学习Hotspot需要知道的英文单词及Hotspot术语表

thereby 因此;由此;从而我们的身体能出汗,由此可以蒸发散热。[例句]Our bodies can sweat,therebylosing heat byevaporationpurge清除,清洗(组织中的异己分子); 净化(心灵、风气等); 涤荡(污秽); n. (对异己的) 清洗,清除,排除;mutual exclusion 互斥with r...

2019-08-25 08:47:00 772

转载 已经打印为文档的类

1、/openjdk/hotspot/jdk/路径下的类/openjdk/hotspot/jdk/src/solaris/bin/java_md_solinux.c/openjdk/hotspot/jdk/src/share/bin/java.c/openjdk/hotspot/jdk/src/share/native/java/lang/Thread.c...

2019-08-25 06:56:00 151

转载 Hotspot的Metaspace

Meta Space是JDK1.8引入的,在JDK1.8使用的是方法区,永久代(Permnament Generation)。元空间存储的是元信息,使用的是操作系统的本地内存(Metaspace与PermGen之间最大的区别),可以是不连续的,由元空间虚拟机进行管理。可以产生OutOfMemoryError1、元空间的特点充分利用了Java语言规范中的好处:类及相关的元数据的...

2019-08-23 19:16:00 295

转载 Hotspot的栈

各种类型的线程他们所需要的栈的大小其实是可以通过不同的参数来控制的:java_thread的stack_size,其实就是-Xss或者-XX:ThreadStackSize的值compiler_thread的stack_size,是-XX:CompilerThreadStackSize指定的值vm内部的线程比如gc线程等可以通过-XX:VMThreadSt...

2019-08-19 11:02:00 145

转载 系统属性

man一下sysconf,解释这个函数用来获取系统执行的配置信息。例如页大小、最大页数、cpu个数、打开句柄的最大个数等等。详细说明可以参考man,还可以写个实例进行测试输出,如下:#include <stdio.h>#include <unistd.h>#define ONE_MB (1024 * 1024)int main(){...

2019-08-17 11:05:00 190

转载 C/C++中书写汇编指令

汇编语言的指令格式目前有两种不同的标准:Windows下的汇编语言基本上都遵循Intel风格的语法,比如:MASM、NASM,Unix/Linux下的汇编语言基本上都遵循AT&T风格的语法。 下面主要介绍Unix/Linux下的汇编,具体格式如下:[名称[:]] 指令码 源操作数SRC,目的操作数DST ;注释开发一个OS,尽管绝大部分代码只需要用C/C++等高级语...

2019-08-17 10:16:00 2332

转载 安装ubuntu 16.04版本时搭建环境参考的文章

重新编译的命令:make all ZIP_DEBUGINFO_FILES=0 DISABLE_HOTSPOT_OS_VERSION_CHECK=ok解决ubuntu中vi不能正常使用方向键与退格键的问题 https://hongzhguan.iteye.com/blog/1479563OpenJDK1.8 HotSpot编译报错 https://blog.csdn.net/m0_...

2019-08-12 22:00:00 140

转载 hotspot的内存

java memory主要分heap memory 和 non-heap memory,其计算公式如下:Max memory = [-Xmx] + [-XX:MaxPermSize] + number_of_threads * [-Xss]heap结构 按分代,分young-eden,young-survivor,old 用-Xmn,-Xms,-Xmx来指...

2019-08-12 09:59:00 180

转载 hotspot的安全区(saferegion)和安全点(safepoint)

1、通过OopMap完成根节点枚举HotSpot虚拟机使用可达性分析算法确定对象是否可以被GC。可达性分析算法从一系列GCRoot对象开始,向下搜索引用链,如果一个对象没有与任何GCRoot对象关联,这个对象就会被判定为可回收对象。GCRoot包括以下对象:虚拟机栈上的本地变量表引用的对象方法区中类的静态属性引用的对象方法区中常量引用...

2019-08-12 08:18:00 831

转载 hotspot的Heap Memory和Native Memory

JVM管理的内存可以总体划分为两部分:Heap Memory和Native Memory。前者供Java应用程序使用的;后者也称为C-Heap,是供JVM自身进程使用的。Native Memory没有相应的参数来控制大小,其大小依赖于操作系统进程的最大值,以及生成的Java字节码大小、创建的线程数量、维持java对象的状态信息大小(用于GC)以及一些第三方的包,比如JDBC驱动使用的na...

2019-08-11 16:40:00 167

转载 Hotspot对象的内存布局

对象头class oopDesc { ...private: volatile markOop _mark; union _metadata { Klass* _klass; narrowKlass _compressed_klass; } _metadata; ...}在hotspot中对象指针称为...

2019-08-11 09:46:00 274

转载 C/C++的内存对齐

1、内存对齐之pragma pack语法语法:#pragma pack( [show] | [push | pop] [, identifier], n )作用:指定结构,联合和类的包对齐方式(pack alignment),可以通知给编译器传递预编译指令而改变对指定数据的对齐方法举个例子如下:#include <iostream>using ...

2019-08-11 08:15:00 127

转载 虚拟机调试和监控工具

JPDA(Java Platform Debugger Architecture):即Java平台调试体系架构。Java虚拟机设计的专门的API接口供调试和监控虚拟机使用JPDA按照抽象层次,又分为三层,分别是:(1)JVM TI(Java VM Tool Interface):虚拟机对外暴露的接口,包括debug和profile。(2)JDWP(Java Debug Wi...

2019-08-10 20:23:00 376

转载 ubuntu下Java通过JNI调用C

下面看一个实例,如下:public class TestJNI { static { System.loadLibrary("diaoyong"); // 程序在加载时,自动加载libdiaoyong.so库 } public native void set(int value); // 声明原生函数。注意要添加native关键字 publ...

2019-08-10 09:23:00 279

转载 hotspot的内存对齐

上界对齐 #define ALIGN(x,a) (((x)+(a)-1)&~(a-1))就是以a为上界对齐的意思。举个例子4k页面边界的例子,即a=4096:如果x = 3888;那么以上界对齐,执行结果就是4096。如果x = 4096;结果是4096.如果x = 4222; 则结果为8192.下界对齐#define ALIGN(x,a) ((x)&...

2019-08-09 08:56:00 193

转载 Java8的伪共享和缓存行填充--@Contended注释

执行时,必须加上虚拟机参数-XX:-RestrictContended,@Contended注释才会生效缓存系统中是以缓存行(cache line)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无意中影响彼此的性能,这就是伪共享。缓存行上的写竞争是运行在SMP系统(...

2019-08-09 07:24:00 611

转载 学习HSDB

HSDB则是在SA(Serviceability Agent)基础上包装起来的一个调试器,而SA是个非常便于探索HotSpot VM内部实现的API。Stack Memory窗口的内容有三栏:左起第1栏是内存地址,请让我提醒一下本文里提到“内存地址”的地方都是指虚拟内存意义上的地址,不是“物理内存地址”,请不要弄混了这俩概念;...

2019-08-07 18:59:00 204

转载 安装与配置HSDIS与JITWatch

本作者的系统:操作系统版本及位数可通过uname -a命令查看,如下:Linux ubuntu 3.13.0-32-generic #57~precise1-Ubuntu SMP Tue Jul 15 03:51:20 UTC 2014 x86_64 x86_64 x86_64 GNU/LinuxJDK的版本可通过java -version来查看,如下:java v...

2019-08-03 14:34:00 545

转载 x86-64位指令学习

参考文章:(1)x86-64指令系统过程调用学习笔记https://blog.csdn.net/weixin_44735312/article/details/89818907创建文本sum.c并编写如下程序:#include <stdio.h>int sum(int x,int y){ int t = x +y; ...

2019-08-02 19:29:00 866

转载 Linux内核学习

Linux内核揭秘https://www.cntofu.com/book/114/index.html转载于:https://www.cnblogs.com/mazhimazhi/p/11290771.html

2019-08-02 19:25:00 100

转载 x86 体系指令

指令编码(encode)是指将汇编语言指令及其操作数转换为机器码。指令解码(decode)是指将机器指令转换为汇编语言。对 Intel 指令编码和解码的逐步解释至少将有助于唤起对 MASM 作者们辛苦工作的理解和欣赏。指令格式 一般的 x86 机器指令格式,如下图所示。包含了一个指令前缀字节、操作码、Mod R/M 字节、伸缩索引字节(SIB)、地址位移和立即数。...

2019-08-02 16:11:00 302

转载 Makefile学习

Makefile 中很多时候通过自动变量来简化书写, 各个自动变量的含义如下:自动变量含义$@目标集合$%当目标是函数库文件时, 表示其中的目标文件名$<第一个依赖目标. 如果依赖目标是多个, 逐个表示依赖目标$?比目标新的依赖目标的集合$^所...

2019-07-31 16:06:00 58

转载 目录大纲

第一部分 认识Hotspot1、初始Hotspot2、阅读Hotspot第二部分类的加载1、类的加载2、二分模型3、常量池解析4、成员变量解析5、方法解析第三部分 类的链接与初始化1、验证2、准备3、解析4、初始化第四部分 类的使用与卸载...

2019-06-21 09:59:00 78

转载 hotspot编译

"AA=="1",==", /usr/bin/make -s VERBOSE="-s" LOG_LEVEL="warn" -R -I /home/mazhi/workspace/openjdk/make/common "-f" /home/mazhi/workspace/openjdk/hotspot"/make/"linux"/Makefile checks" /usr/bin/...

2019-06-03 15:18:00 611

转载 研究小技巧

1、在Linux命令行中以图形化窗口打开文件夹nautilus /home/testProjects/2、截图使用 PrintScreen,如果是部分截图,则为Shift+PrintScreen3、alt+ctrl+t 快速打开ubuntu的终端4、Mac下的截图操作分别为COMMAND+SHIFT+3,COMMAND+SHIFT+4。ubuntu下部分截图使用Sh...

2019-06-03 15:13:00 75

转载 C++之宏、extern关键字与多线程

理解C++ 宏1、特殊字符  考虑下面的需求,程序中多处使用文本字符串。我们知道文本字符串前后都要加上双引号,我很讨厌输入双引号。有没有好的办法呢?根据常识,使用下面的宏:  #define Str(x) "x"  String s = Str(Hello); 期望预编译为:String s = "Hello",其实这是有问题的?仔细分析一下,宏的本质是文本替换。从编...

2019-05-26 19:24:00 683

转载 Hotspot研究-工程结构

1、/home/mazhi/workspace/openjdk/hotspot/src/cpu/x86/vm/路径下的文件列表如下:(共有99920行代码)5557 assembler_x86.cpp1801 assembler_x86.hpp51 assembler_x86.inline.hpp50 bytecodeInte...

2019-05-26 19:04:00 819

转载 Java调度池的实现原理

下图是关于ScheduledFutureTask的继承体系结构图。转载于:https://www.cnblogs.com/mazhimazhi/p/9681500.html

2018-09-20 16:11:00 108

转载 Java的并发及锁

Java并发编程:用AQS写一把可重入锁https://blog.csdn.net/zhang5476499/article/details/83796289线程的同步时可以使一个线程阻塞而等待一个信号,同时放弃锁使其他线程可以能竞争到锁。在synchronized中我们可以使用Object的wait()和notify方法实现这种等待和唤醒,但是在Lock中怎么实现这种...

2018-09-18 16:04:00 71

转载 Java面试之高并发系统

在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。转载于:https://www.cnblogs.com/mazhimazhi/p/9650338.html

2018-09-15 11:14:00 72

转载 Java面试MySQL的一些问题

MySQL InnoDB存储的文件结构索引树是如何维护的?数据库自增主键可能的问题转载于:https://www.cnblogs.com/mazhimazhi/p/9644394.html

2018-09-14 07:25:00 69

转载 Java的动态代理

为什么JDK代理只能对接口实现代理?1、动态代理的几种方式Java主要有两种代理,JDK和Cglib动态代理。先看JDK代理实例如下:JDK动态代理的原理是根据定义好的规则,用传入的接口创建一个新类,这就是为什么采用动态代理时为什么只能用接口引用指向代理,而不能用传入的类引用执行动态类。JDK创建代理有一个限制,即它只能为接口创建代理实例。举个例子如下:...

2018-09-12 09:53:00 53

转载 Java类的加载及实例的创建

java中class.forName()和classLoader都可用来对类进行加载。class.forName()前者除了将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块。而classLoader只干一件事情,就是将.class文件加载到jvm中,不会执行static中的内容,只有在newInstance才会去执行static块。Class.f...

2018-09-12 09:00:00 166

转载 Java面试总结之AIO与NIO

1、Java NIO是一种同步非阻塞的I/O模型将多个IO的阻塞复用到同一个select的阻塞上,从而使得系统在单线程的情况下处理多个客户端请求。NIO三个核心对象:通道(Channel)、缓冲区(Buffer)和选择器(Selector)具体说就是Selector会不断轮询注册在其上的Channel,如果某个Channel上有新的TCP连接,读或者写事件,这个Cha...

2018-09-12 07:51:00 422

转载 如何啃一本很晦涩的专业书

近一年的时间啃了3本书,另外一本虎书近期准备啃,来来来,给大家上图。 对我来说,上面的几本书可以说晦涩中的晦涩,实例少,理论多,尤其是《The Java Language Specification》,英文版的,着实费了些力气,而且网上的资料也少,对于一些看不懂的地方只能自己硬着头皮一遍一遍的读,同时也在读Javac源代码,毕竟Javac源码就是严格按照...

2018-06-20 20:24:00 198

转载 IT程序员的抉择:我要离开帝都了

不知不觉在北京已经漂泊了近5年了,共为3家公司打过工,其中有几十人的小公司,也有几万人的大公司。随着工作技能的提升和工作经验的积累,薪水自然也涨了不少,但是看着北京的房价、物价飞涨,感觉自己赚多少都是小钱,还不如尽早卷铺盖回内蒙老家发展。那里毕竟是老家,亲戚朋友相对多一点。随着年龄的增长,也想有个自己的家了。之前犹犹豫豫的好长时间,不知道自己是留是走,今天还是详细的罗列了两个地方发展...

2018-06-16 11:39:00 309

转载 go项目

1、循环使用缓存每条日志需要开辟缓存块来存储内容,以减少频繁的内存分配与回收。日志结构体定义如下:type MLogger struct { // freeList is a list of byte buffers, maintained under freeListMu. freeList *buffer // freeListMu maintain...

2018-05-22 14:21:00 97

转载 go陷阱

必看的题目:https://blog.csdn.net/weiyuefei/article/details/779638101、关于值传递、引用传递与指针传递当一个变量或者新值被创建时, 如果没有为其明确指定初始值,go语言会自动初始化其值为此类型对应的零值, 各类型零值如下:false : bool,0: integer0.0: floa...

2018-05-10 14:21:00 120

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除