JVM粗解】的更多相关文章

主要是碰到了eclipse无法启动的问题.之前不知道怎么回事导致eclipse启动速度一次比一次慢, 百度了下开始改动eclipse.ini参数 也不知道改了啥.第二天直接起不来eclipse了. 于是花一上午 搞了一下这个 顺带记录一下堆内存和JVM虚拟内存的理解 堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在 Java 虚拟机启动时创建的.”“在JVM中堆之外的内存称为非堆内存(Non-…
JVM详解总结 1.JVM内存模型 1.1 运行时数据区内存分布实例 1.2 类加载的生命周期 2.物理内存与虚拟内存 3.Java中需要使用内存的组件 3.1 Java堆 3.2 线程 3.3 类和类加载器 3.4 NIO 3.5 JNI 4.JVM内存结构 5.JVM内存回收策略 5.1 回收原则 5.2 引用状态 5.3 方法区的垃圾回收 5.4 垃圾收集算法 5.5 垃圾收集器 5.6 GC 5.7 最终确认 6.对象的访问 6.1 E堆内存模型 6,2 new 6.3 Object 1…
概念 数据类型 Java 虚拟机中,数据类型可以分为两类:基本类型和引用类型.基本类型的变量保存原始值,即:他代表的值就是数值本身:而引用类型的变量保存引用值.“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置. 基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress 引用类型包括:类类型,接口类型和数组. 堆与栈 堆和栈是程序运行的关键,很有必要把他们的关系说清楚.  栈是运行…
1.0,jdk与jre和jvm的区别: JDK(Java Development Kit):指的是Java开发工具集.JDK是整个Java的核心,包括了Java基础类库.Java运行环境(JRE)和Java开发工具.是做Java开发必须要安装的. JRE(Java Runtime Environment):指的是Java运行时环境.Java程序运行时必需要JRE的支持.如果系统只安装JRE的话,则意味着系统可以跑任何Java程序,但不能做Java开发. JVM (Java Virtual Mac…
目录 简介 class文件中的常量池 运行时常量池 静态常量详解 String常量 数字常量 符号引用详解 String Pool字符串常量池 总结 简介 JVM在运行的时候会对class文件进行加载,链接和初始化的过程.class文件中定义的常量池在JVM加载之后会发生什么神奇的变化呢?快来看一看吧. class文件中的常量池 之前我们在讲class文件的结构时,提到了每个class文件都有一个常量池,常量池中存了些什么东西呢? 字符串常量,类和接口名字,字段名,和其他一些在class中引用的…
JDK.JRE.JVM JDK包含JRE,而JRE包含JVM JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE.Java工具和Java基础类库.Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库.JVM是Java Virtual Machine(Java虚拟机)的缩写,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的…
前言 django的命令行在整个的django web开发中都会经常用到,而且是必须得用到.所以,能够了解下django的命令行实现其实是非常有帮助的. 如果大家比较关心django命令的详细说明和使用,可以查看这里. 命令行执行入口 django通过django-admin.py和manage.py来执行命令,以下是这两个文件的源码: from django.core import management if __name__ == "__main__": management.ex…
CSLM工具(continuous space language model toolkit)用于训练NNLM,支持SRILM.KENLM(默认)语言模型工具,CUDA加速,CSTM统计机器翻译. 本文粗略介绍在SRILM与CUDA环境下配置CSLM工具过程.操作系统为Ubuntu64bit 13.04 桌面版,Xeon系列CPU,GEFORCE显卡... 下载并安装CUDA toolkit 下载并安装SRILM 下载并安装Atlas BLAS或Intel_MKL 下载并安装boost库 ./b…
此次学习资料详细来自:http://blog.csdn.net/u013471155 本次是粗学,仍有诸多疑问,暂且记录一二,如有不足和建议,希望可以达者指点. 三个关键点理解:   1.关于函数“变量”(或“变量”函数)的理解 2.关于高阶函数的理解 3.关于嵌套函数的理解 1.装饰器 装饰器实际上就是为了给某程序增添功能,但该程序已经上线或已经被使用,那么就不能大批量的修改源代码,这样是不科学的也是不现实的,因为就产生了装饰器,使得其满足: 1.不能修改被装饰的函数的源代码 2.不能修改被装…
一.JVM内存管理 1.1JVM运行时数据区 1.1.1程序计数器:记录当前线程正在执行的字节码指定的地址(行号) 为什么需要它:程序容易被打断 1.1.2虚拟机栈:存储当前线程运行方法时所需要的数据.指令.返回地址 1.1.3本地方法栈:和虚拟机栈类似,存储的是native方法 1.1.4方法区:类信息.常量(1.7移至堆).静态变量.JIT(编译好的代码等数据 1.7移至堆) 1.1.5堆:存放所有实例对象和数组 设置:启动时分配的内存:-Xms,最大内存 -Xmx 1.2JVM内存模型 1…
目录 简介 一个简单的class ClassFile的二进制文件 class文件的密码本 magic version 常量池 描述符 access_flags this_class和super_class interfaces_count和interfaces[] fields_count和fields[] methods_count和methods[] attributes_count和attributes[] 总结 简介 一切的一切都是从javac开始的.从那一刻开始,java文件就从我们肉…
目录 简介 本地变量的生命周期 举例说明 优化的原因 总结 简介 java方法中定义的变量,它的生命周期是什么样的呢?是不是一定要等到方法结束,这个创建的对象才会被回收呢? 带着这个问题我们来看一下今天的这篇文章. 本地变量的生命周期 在类中,变量类型有类变量,成员变量和本地变量. 本地变量指的是定义在方法中的变量,如果我们在方法中定义了一个变量,那么这个变量的生命周期是怎么样的呢? 举个例子: public void test(){ Object object = new Object();…
目录 简介 什么是Intrinsic Methods 内置方法的特点 多样性 兼容性 java语义的扩展 Hotspot VM中的内置方法 intrinsic方法和内联方法 intrinsic方法的实现 Graal 总结 简介 内置方法是什么呢?它和inline method有什么关系呢?内置方法是怎么实现的呢?所有的问题都可以在本文找到答案. 什么是Intrinsic Methods 什么是内置方法呢? 维基百科给出的定义是这样的: 在计算机软件中,按照编译器理论,固有方法(或内置方法)是可在…
目录 简介 加载 运行时常量池 类加载器 链接 验证 准备 解析 初始化 总结 简介 有了java class文件之后,为了让class文件转换成为JVM可以真正运行的结构,需要经历加载,链接和初始化的过程. 这三个过程是怎么工作的呢?在本文中你将会找到答案. 加载 JVM可以分为三大部分,五大空间和三大引擎,要讲起来也不是特别复杂,先看下面的总体的JVM架构图. 从上面的图中,我们可以看到JVM中有三大部分,分别是类加载系统,运行时数据区域和Execution Engine. 加载就是根据特定…
一.JVM内存结构 1.1 内存结构---概略图 1.2 内存结构--详细图 二.类加载器子系统的作用 类加载器子系统负责从文件系统或网络中加载.Class文件,文件需要有特定的标识(cafe babe). ClassLoader只负责.Class文件的加载,至于它是否可以运行,由执行引擎决定. 加载的类信息存放于一块被称为"方法区"的内存空间.除了类信息外,方法区还会存放运行时常量池信息,可能还包括字符串字面量(字面量指的是固定值,初始值)和数字常量(这部分常量信息是.Class文件…
前言 如果在文中用词或者理解方面出现问题,欢迎指出.此文旨在提及而不深究,但会尽量效率地把知识点都抛出来 一.JVM的基本介绍 JVM 是 Java Virtual Machine 的缩写,它是一个虚构出来的计算机,一种规范.通过在实际的计算机上仿真模拟各类计算机功能实现··· 好,其实抛开这么专业的句子不说,就知道JVM其实就类似于一台小电脑运行在windows或者linux这些操作系统环境下即可.它直接和操作系统进行交互,与硬件不直接交互,可操作系统可以帮我们完成和硬件进行交互的工作. 1.…
Test https://www.cnblogs.com/yrxing/p/14651346.html#gc的基础知识 https://www.cnblogs.com/yinzhengjie/p/9279283.html https://github.com/weolwo/jvm-learn https://www.cnblogs.com/xiaopaipai/p/10522794.html https://www.zhihu.com/question/421237964/answer/1764…
一.概述 1.介绍 类比一下:红框就好比内存的运行时数据区,在各自不同的位置放了不同的东西.而厨师就好比执行引擎. 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行.JVM内存布局规定了Java在运行过程中内存申请.分配.管理的策略,保证了JVM的高效稳定运行.不同的JVM对于内存的划分方式和管理机制存在着部分差异(典型的不同,就是针对方法区).结合JVM虚拟机规范,来探讨一下经典的JVM内存布局.运行时数据区-详图: 红框处有变化,叫方法区,JDK7…
一.堆 1.介绍 Java运行程序对应一个进程,一个进程就对应一个JVM实例.一个JVM实例就有一个运行时数据区(Runtime),Runtime里面,就只有一个堆,一个方法区.这里也阐述了,方法区和堆是一个进程一份.而一个进程当中,可以有多个线程,那就意味着一个进程中的多个线程会共享堆空间和方法区. 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域.堆在JVM启动的时候被创建,其空间大小也就确定了,是JVM管理的最大一块内存空间,堆内存大小是可以调节的. Java虚拟机规范规定…
一.概述 1.介绍 <Java虚拟机规范>中明确说明:尽管所有的方法区在逻辑上属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩.但对于HotSpot JVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开. 所以,方法区看作是一块独立于Java堆的内存空间.官方文档: 方法区在JVM启动的时候被创建,并且它的实际的物理内存空间和Java堆区一样,可以是不连续的.方法区的大小和堆一样,可选择固定大小或可扩展.方法区的大小决定了系统可以保持多少个类,如…
原文:http://schlu.org/2013/10/01/Xcode-Asset-Catalogs.html 基础知识 在今年的WWDC大会上苹果介绍了Asset Catalogs.Asset Catalogs是用来减少工程导航上的混乱,让图片使用情况变得更为有条理.它的方式是,你不必将所有图片都列出来,取而代之,你可以在工程中创建一个或者多个asset catalog,你可以把图片拖拽到一个合适的位置来进行管理. Asset Catalog除了可以管理app icon以及启动图片,你还可以…
中间件 中间件在asp.net core中非常重要,它用来处理httpcontext.而httpcontext封装了请求和响应.也就是说,中间件是用来处理请求和响应的. 本质上,中间件被封装到了IApplicationBuilder这个接口中,他的实现类是ApplicationBuilder.源码在github:https://github.com/aspnet/HttpAbstractions ApplicationBuilder有两个方法和一个字段比较重要: private readonly…
rowspan和colspan是我们初学HTML表格中会在做一些特殊表格中遇到.其常在td中添加. rowspan的作用是指定纵向所跨越单元格的行数. 如下效果. colspan的作用是指定单元格横向跨越的列数 如下效果.…
百度定义:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. Socket通信流程: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 服务器根据地址类型(ipv4,ipv6).socket类型.协议创建socket 服务器为socket绑定ip地址和端口号 服务器socket监听端口号请求,随时准备接收客户端发来的连接,这时候服务器的socket并没有被打开 客户端创建socket 客户端打开socket,根据服…
何为协议,何为委托,何为分类(类别)? 委托  即 代理 delegate:  他是 (接口的实现类)类似c中的回调.         把某个对象要做的事情委托给别的对象去做. 那么别的对象就是这个对象的代理,来代替他处理要做的事情. 在code中,首先你要明确一个对象的委托方是谁,委托的内容是什么.          在mfc中,每个程序都要继承自cwinapp,就是要重写几个虚函数额.          但是在cocoa中,我们来实现个UIApplicationDelegate代理,不用继承…
引言: 使用不同的函数定义方法,可以使得函数定义更加有效而且易于维护 本文为博主原创,根据本人自己的理解整理而成,若有不准确的地方,希望能留言告知以免误导他人: 首先进一段代码,来直观感受一下不同类型的函数的定义方法: >>> >>> class A(object): a = def instance_method(self): print '实例方法打印类变量a: %s' % self.a @classmethod def class_method(cls): pri…
个人小结,仅供参考. 接口测试很简单,但是很重要. 可以写代码,也可以用工具进行测试.工具说说就很多了,简单介绍一下我目前用过的几个能够测试接口的工具, Burpsuite:这类偏请求攻击类软件 Fiddler:这类抓包软件 Jmeter:这类性能软件 Postman:这类HTTP请求模拟软件 Robotframework:这类多功能测试框架软件 本次是续以前的接口测试,小结一下robot的接口分层测试.该随笔内容,仅从概念上介绍一下. 为什么要分层呢? 举个例子:比如10个接口测试用例(接口与…
ConcurrentDictionary是线程安全类,是什么在保证? 内部类 private class Tables { internal readonly Node[] m_buckets; // A singly-linked list for each bucket. internal readonly object[] m_locks // A set of locks, each guarding a section of the table. …… }构造函数 internal C…
引言 面向对象, 设计模式是现代软件开发基石. C的面向过程已经很简洁, 但不代表C就没有面向对象.(libuv框架中C面向对象用的很多) 因为思想是互通的.全当熟悉一下那些常用的设计模式.先假定有一些语法和设计基础.本文会通过C实现下面内容. a.封装,继承,多态 b.单例模式 c.工厂模式 d.抽象工厂模式 e.观察者模式 f.命令模式 (分析代码有点多和繁琐, 因为C去搭建, 都是从0到1, 能够复用的东西很少.) 主要在于回顾设计模式的思路. 先从a.封装,继承,多态开始抛砖引玉. 下面…
首先,CGI 是干什么的?  CGI 是为了保证web server传递过来的数据是标准格式.CGI  是个协议和 进程没什么关系. CGI 是http服务器于你的本机或者其他电脑上的程序交谈的一种工具.其程序必须运行在网络服务器上. fastcgi  是一个与平台和语言无关的接口.只要按照它本身的接口来调用 都能实现语言和web service的通信. CGI处理步骤: 1用户通过internet 把用户请求发送到服务器. 2 服务器接受到用户请求并交给cgi程序处理. 3cgi 程序吧处理结…