java性能优化之编译器版本与平台对应关系
作者:我犟不过你 发布时间:2023-09-04 18:31:48
标签:Java,性能优化,编译器
本章节更加具体化的学习编译器还有哪些可以优化的方便,让你的应用展现出更好的性能。
JIT编译器版本
JIT编译器有不同的版本,而最终你使用哪种,取决于你所使用的系统平台。前面的文章我们说到编译器有-client
和-server
,具体划分应该是如下所示:
-client
32位client编译器-server
32位server编译器-d64
64位server编译器
如果你的系统是32位,那么你只能使用32位JVM,如果你是64位系统,那么可以选择32位或64位系统。
不同jvm的编译器版本如下:
jvm版本 | -client | -server | -d64 |
---|---|---|---|
linux 32位 | 32位client | 32位server | 出错 |
linux 64位 | 64位server | 64位server | 64位server |
windows 32位 | 32位client | 32位server | 出错 |
windows 64位 | 64位server | 64位server | 64位server |
macOS | 64位server | 64位server | 64位server |
我们使用的java8,默认使用的都是server编译器,同时是开启分层编译的。
默认情况JVM如何选择编译器?
假如我们没有指定编译器的参数,那么JVM是如何选择使用何种编译器的呢?
实际上jvm是考虑机器的CPU数目:
在64位系统,无论机器多少CPU,都会使用server编译器
在32系统
如果只有一个cpu,那么使用client编译器
多个cpu,使用server编译器。
如何判断当前环境jvm使用的编译器?
我们最经常使用的查看java版本命令,就可以在最后一行展示当前所使用的编译器类型:
[root@public-server9 esmp]# java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
复制代码
如上所示,Linux环境下使用的是64位server编译器。
小节
不同的平台环境对应着不同的java版本,不同的java版本又对应着不同的编译器版本。我们在使用的时候,只需要选择对应于平台的java版本,不需要手动指定编译器,仰仗于平台所支持的编译器即可。
来源:https://juejin.cn/post/7109633835805081636


猜你喜欢
- 本文总览本篇来学习Kotlin循环结构的知识1. While循环while循环用于重复迭代代码块,只要给定条件为 true就会执行一次循环代
- 一、封装封装:是面向对象方法的重要原则,就是把对象的属性和行为(数据)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节,就是把不想告诉或
- 现在很多app的首页都有一个倒计时控件,比如说3秒或者5秒自动跳转界面,或者点击控件直接跳过首先,自定义控件CircleProgressba
- 本篇文章尝试从What、Why、How这三个角度来探索Java中的弱引用,帮助大家理解Java中弱引用的定义、基本使用场景和使用方法。由于个
- Java是一门天然的面向对象的语言。而所有我们手动创造出来的类,都继承于同一个类,即Object类。可以看一下Object类的结构nativ
- 本文实例为大家分享了java web实现简单留言板的具体代码,供大家参考,具体内容如下一、目标用户可以登录并记住密码进入留言板,添加留言,点
- 现公司架构大佬在项目中使用了 mybatis-generator-gui ,这是一款开源图形化 MyBatis 代码生成工具,使用起来相当的
- 废话不多说了,直接给大家贴代码了,具体代码如下所述:package com.example.esp8266;import java.io.I
- 在工作中经常读写文本文件,在读文件时,需要按开头的两个字节判断文件格式,然后按该格式读文件中的内容。 写文件时,也要按目标文件指定
- C#学习笔记- 浅谈数组复制,排序,取段,元组using System;using System.Collections.Generic;n
- 本文实例为大家分享了Android实现选项菜单的具体代码,供大家参考,具体内容如下创建选项菜单步骤:(1)覆盖Activity的onCrea
- 背景传统 SpringMVC 项目中,我们可以定义容器初始化 Servlet ,然后在 web.xml 配置该 Servlet ,指定 lo
- 一、interrupt的使用特点我们先看2个线程打断的示例首先是可打断的情况:@Testpublic void interruptedTes
- 本文实例讲述了WinForm实现自定义右下角提示效果的方法。分享给大家供大家参考。具体实现方法如下:using System;using S
- 今天继续讲解Fragment组件的特性,主要是跟Activity的交互和生命周期的关系,我们前面已经说过Fragment是依赖于Activi
- 先新建一个文件夹kun,kun就是类所在的package。新建一个java文件。HelloWorld.java的代码如下:package k
- package com.cjonline.foundation.evisa;import java.io.BufferedReader;im
- 前言:文件的上传和下载在日常开发中很是常见,那么这一功能是如何实现的呢,下面我给大家介绍一下实现条件:1、需要一个form标签,method
- 什么是JSON?JSON (JavaScript Object Notation) is a lightweight data-interc
- 时间戳转换:/// <summary>/// C#时间格式转换为时间戳(互转)/// 时间戳定义为从格林威治时间 1970年01