高性能硬件上的程序部署策略 在高性能硬件上部署程序,目前主要有两种方式: 通过64位JDK来使用大内存。 -- 缺点:GC停顿时间长 使用若干个32位虚拟机建立逻辑集群来利用硬件资源。 -- 思想: 分治,汇总。 缺点:分布式/多实例的缺点,如数据共享,数据一致性,一致性hash等。 堆外内存导致的 ...
分类:
编程语言 时间:
2019-02-02 12:48:50
阅读次数:
211
1、学习目的 当需要排查各种内存溢出、 内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。 Java内存运行时区域的各个部分,其中程序计数器、 虚拟机栈、 本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊 ...
分类:
编程语言 时间:
2019-02-01 10:13:45
阅读次数:
216
2、HotSpot虚拟机对象探秘 对象的创建过程 1、加载类 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、 解析和初始化过。 如果没有,那必须先执行相应的类加载过程。 2、分配内存 在类加载检查通过后,接下来 ...
分类:
编程语言 时间:
2019-02-01 10:13:12
阅读次数:
221
从Java开发通过大概3个月的学习转到大数据开发,主要分享一下学习路径: 第一阶段: 01.Linux学习(跟鸟哥学就ok了) 02.Java 高级学习(《深入理解Java虚拟机》、《Java高并发实战》) 第二阶段: 03.Hadoop (董西成的书) 04.HBase(《HBase权威指南》) ...
分类:
编程语言 时间:
2019-01-29 12:49:15
阅读次数:
296
java内存区域 Java虚拟机执行java程序时会将管理的内存划分为若干个区域: 1. 程序计数器 程序计数器是一个”线程私有“的内存区域,用于获取下一条需要执行的字节码指令,如分支、循环、跳转等。 2. Java虚拟栈 在Java内存划分的时候,经常会听到将其分为”堆内存“和”栈内存“,这种分法 ...
分类:
编程语言 时间:
2019-01-21 22:50:30
阅读次数:
200
区域简介 JVM运行时区域有些随着虚拟机进程的启动而存在,有些依赖于用户线程的启动和结束而建立和销毁,大致分为以下几类:方法区,虚拟机栈,本地方法栈,堆,程序计数器,概念图如下(源于《深入理解JAVA虚拟机 JVM高级特性》): 程序计数器 当前线程所执行的字节码的行号指示器,是一块各个线程私有的内 ...
分类:
其他好文 时间:
2019-01-09 18:37:27
阅读次数:
174
Java线程与锁 本篇是 《深入理解Java虚拟机》的最后一章, 在此涉及到了线程安全, 但并不是如何从代码层次来实现线程安全, 而是虚拟机本身对线程安全做出了哪些努力, 在安全与性能之间又采取了哪些优化措施. 那么一步步来梳理这些概念. 三种线程概念——内核线程、轻量级进程、用户线程 参考 "内核 ...
分类:
编程语言 时间:
2019-01-07 21:19:45
阅读次数:
230
类加载的整个生命周期: 加载、连接(验证、准备、解析)、初始化、使用、卸载。 加载: class文件中的二进制数据读取到内存中,然后将该字节流所代表的静态数据结构转化为方法区中运行的数据结构,并且在堆内存中生成一个java.lang.Class对象作为访问方法区数据结构的入口 验证: 确保当前cla ...
分类:
编程语言 时间:
2019-01-06 23:01:29
阅读次数:
193
前言 相信很多人都看过下面这张图,(来自《深入理解Java虚拟机:JVM高级特性与最佳实践》) 在学完几种垃圾收集器类型及组合后,打算看看实际中程序用到的垃圾收集器。 但是在jconsole中看到的,如下: 两边的名称并不完全匹配,给我造成了很多困惑之处。 实际上,jconsole里面用到的,我想应 ...
分类:
其他好文 时间:
2019-01-05 15:14:01
阅读次数:
190
此文已由作者赵计刚授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 注:本文主要参考自《深入理解Java虚拟机(第二版)》和《深入理解Java内存模型》 1、Java内存模型(JMM) Java内存模型的主要目标:定义在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节 ...
分类:
编程语言 时间:
2018-12-21 13:09:19
阅读次数:
198