深入理解jvm—编译

2023-05-16

为什么80%的码农都做不了架构师?>>>   hot3.png

java开发一阵子了,想深入了解下jvm,所以在ubuntu下本地编译学习一下openjdk代码

1,java虚拟机有很多不稳定参数,以xx开头可以使用java  -XX:+PrintFlagsFinal 查看;

2,编译java

下载open jdk 源码;http://download.java.net/openjdk/jdk8/

放到ubuntu 虚拟机,解压,根据readme.build操作

 

configure: error: Could not find freetype! You might be able to fix this by running 'sudo apt-get install libfreetype6-dev'. 

安装完依然这个鸟样。FUCK!最近工作忙,找个时间继续

--------------------------------------

开始重编译一次

1,在ubuntu 14.04 64b,先安装需要的软件

sudo apt-get install build-essential gawk m4 libasound2-dev   libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutils libmotif3 libmotif-dev ant

2,下载openjdk,1.7 http://www.java.net/download/openjdk/jdk7u40/promoted/b43/openjdk-7u40-fcs-src-b43-26_aug_2013.zip

下载上传服务器,解压缩;

3,

make sanity

----------------------------------------------
ERROR: You do not have access to valid Cups header files. 
       Please check your access to 
           /usr/include/cups/cups.h 
       and/or check your value of ALT_CUPS_HEADERS_PATH, 
       CUPS is frequently pre-installed on many systems, 
       or may be downloaded from http://www.cups.org 
 

安装解决:sudo apt-get install libcups2-dev


ERROR: HOTSPOT_SERVER_PATH does not point to a valid HotSpot VM. 
       Please check your access to 
           /NOT-SET/re/jdk/1.7.0/promoted/latest/binaries/linux-amd64/jre/lib/amd64/server/libjvm.so 
       and/or check your value of ALT_HOTSPOT_SERVER_PATH. 

执行目录不对,应该在open jdk根目录运行 

运行后显示:Sanity check passed.

运行命令:make

/jvm/openjdk/langtools/make/build.xml:860: Error running /usr/lib/jvm/java-7-openjdk-amd64/bin/javac compiler
安装openjdk sudo apt-get install openjdk-7-jdk

再运行命令:

 make ALT_BOOTDIR=/usr/lib/jvm/jdk1.7.0_80

开始编译

/bin/sh: 2: zip: not found

apt-get install zip

再运行命令: make ALT_BOOTDIR=/usr/lib/jvm/jdk1.7.0_80

再报错

make[5]: Entering directory `/jvm/openjdk/build/linux-amd64/hotspot/outputdir'
>&2 echo "*** This OS is not supported:" `uname -a`; exit 1;
*** This OS is not supported: Linux 466e7b25085c 4.4.52-1.el7.elrepo.x86_64 #1 SMP Sun Feb 26 08:48:14 EST 2017 x86_64 x86_64 x86_64 GNU/Linux
make[5]: *** [check_os_version] Error 1
make[5]: Leaving directory `/jvm/openjdk/build/linux-amd64/hotspot/outputdir'
make[4]: *** [linux_amd64_compiler2/debug] Error 2
make[4]: Leaving directory `/jvm/openjdk/build/linux-amd64/hotspot/outputdir'
make[3]: *** [generic_build2] Error 2
make[3]: Leaving directory `/jvm/openjdk/hotspot/make'
make[2]: *** [product] Error 2
make[2]: Leaving directory `/jvm/openjdk/hotspot/make'
make[1]: *** [hotspot-build] Error 2
make[1]: Leaving directory `/jvm/openjdk'
make: *** [build_product_image] Error 2

真是日了狗了,原来是hot spot makefile版本指定太低,

修改文件/jvm/openjdk/hotspot/make/linux# vi Makefile 

SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 3% 这后面添加自己的linux版本 4%

继续 make 命令:make ALT_BOOTDIR=/usr/lib/jvm/java-7-openjdk-amd64

程序开始正常编译,过了大约5-6分钟,又报错:

Using java runtime at
Error occurred during initialization of VM
java.lang.NullPointerException
        at java.util.Hashtable.hash(Hashtable.java:262)
        at java.util.Hashtable.remove(Hashtable.java:585)
        at java.lang.System.initProperties(Native Method)
        at java.lang.System.initializeSystemClass(System.java:1119)

真是日了狗了,这个明显是代码空指针异常,更改使用jdk1.6

make ALT_BOOTDIR=/jvm/jdk1.6.0_45

注:此处至少说明oracle jdk和openjdk 此处文件 

java.lang.System.initializeSystemClass(System.java:1119)有较大改动。

编译通过,继续往下走:

又报错:

/jvm/jdk1.6.0_45/bin/java -XX:-PrintVMOptions -XX:+UnlockDiagnosticVMOptions -XX:-LogVMOutput -Xmx512m -Xms512m -XX:PermSize=32m -XX:MaxPermSize=160m -jar /jvm/openjdk/build/linux-amd64/btjars/generatecurrencydata.jar -o /jvm/openjdk/build/linux-amd64/lib/currency.data.temp \
                < ../../../src/share/classes/java/util/CurrencyData.properties
Error: time is more than 10 years from present: 1136059200000
java.lang.RuntimeException: time is more than 10 years from present: 1136059200000
        at build.tools.generatecurrencydata.GenerateCurrencyData.makeSpecialCaseEntry(GenerateCurrencyData.java:285)
        at build.tools.generatecurrencydata.GenerateCurrencyData.buildMainAndSpecialCaseTables(GenerateCurrencyData.java:225)
        at build.tools.generatecurrencydata.GenerateCurrencyData.main(GenerateCurrencyData.java:154)
make[4]: *** [/jvm/openjdk/build/linux-amd64/lib/currency.data] Error 1
make[4]: Leaving directory `/jvm/openjdk/jdk/make/java/java'

时间过长?查看文件,发现如下注释:

# Mappings from ISO 3166 country codes to ISO 4217 currency codes.
#
# Three forms are used:
# Form 1: <country code>=<currency code>
# Form 2: <country code>=<currency code 1>;<time stamp>;<currency code 2>
# Form 3: <country code>=
# Form 1 is used if no future change in currency is known.
# Form 2 indicates that before the specified time currency 1 is used, from
# the specified time currency 2. The time is given in SimpleDateFormat's
# yyyy-MM-dd-HH-mm-ss format in the GMT time zone.
# Form 3 indicates the country doesn't have a currency (the entry is still
# needed to verify that the country code is valid).

修改文件如下:

#
# Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

formatVersion=1

# Version of the currency code information in this class.
# It is a serial number that accompanies with each amendment, such as 
# 'MAxxx.doc'

dataVersion=151

# List of all valid ISO 4217 currency codes.
# To ensure compatibility, do not remove codes.

all=ADP020-AED784-AFA004-AFN971-ALL008-AMD051-ANG532-AOA973-ARS032-ATS040-AUD036-\
    AWG533-AYM945-AZM031-AZN944-BAM977-BBD052-BDT050-BEF056-BGL100-BGN975-BHD048-BIF108-\
    BMD060-BND096-BOB068-BOV984-BRL986-BSD044-BTN064-BWP072-BYB112-BYR974-\
    BZD084-CAD124-CDF976-CHF756-CLF990-CLP152-CNY156-COP170-CRC188-CSD891-CUP192-CUC931-\
    CVE132-CYP196-CZK203-DEM276-DJF262-DKK208-DOP214-DZD012-EEK233-EGP818-\
    ERN232-ESP724-ETB230-EUR978-FIM246-FJD242-FKP238-FRF250-GBP826-GEL981-\
    GHC288-GHS936-GIP292-GMD270-GNF324-GRD300-GTQ320-GWP624-GYD328-HKD344-HNL340-\
    HRK191-HTG332-HUF348-IDR360-IEP372-ILS376-INR356-IQD368-IRR364-ISK352-\
    ITL380-JMD388-JOD400-JPY392-KES404-KGS417-KHR116-KMF174-KPW408-KRW410-\
    KWD414-KYD136-KZT398-LAK418-LBP422-LKR144-LRD430-LSL426-LTL440-LUF442-\
    LVL428-LYD434-MAD504-MDL498-MGA969-MGF450-MKD807-MMK104-MNT496-MOP446-MRO478-\
    MTL470-MUR480-MVR462-MWK454-MXN484-MXV979-MYR458-MZM508-MZN943-NAD516-NGN566-\
    NIO558-NLG528-NOK578-NPR524-NZD554-OMR512-PAB590-PEN604-PGK598-PHP608-\
    PKR586-PLN985-PTE620-PYG600-QAR634-ROL946-RON946-RSD941-RUB643-RUR810-RWF646-SAR682-\
    SBD090-SCR690-SDD736-SDG938-SEK752-SGD702-SHP654-SIT705-SKK703-SLL694-SOS706-\
    SRD968-SRG740-STD678-SVC222-SYP760-SZL748-THB764-TJS972-TMM795-TMT934-TND788-TOP776-\
    TPE626-TRL792-TRY949-TTD780-TWD901-TZS834-UAH980-UGX800-USD840-USN997-USS998-\
    UYU858-UZS860-VEB862-VEF937-VND704-VUV548-WST882-XAF950-XAG961-XAU959-XBA955-\
    XBB956-XBC957-XBD958-XCD951-XDR960-XFO000-XFU000-XOF952-XPD964-XPF953-\
    XPT962-XSU994-XTS963-XUA965-XXX999-YER886-YUM891-ZAR710-ZMK894-ZWD716-ZWL932-ZWN942-ZWR935


# Mappings from ISO 3166 country codes to ISO 4217 currency codes.
#
# Three forms are used:
# Form 1: <country code>=<currency code>
# Form 2: <country code>=<currency code 1>;<time stamp>;<currency code 2>
# Form 3: <country code>=
# Form 1 is used if no future change in currency is known.
# Form 2 indicates that before the specified time currency 1 is used, from
# the specified time currency 2. The time is given in SimpleDateFormat's
# yyyy-MM-dd-HH-mm-ss format in the GMT time zone.
# Form 3 indicates the country doesn't have a currency (the entry is still
# needed to verify that the country code is valid).
#
# The table is based on the following web sites:
# http://www.din.de/gremien/nas/nabd/iso3166ma/codlstp1/db_en.html
# http://www.bsi-global.com/iso4217currency
# http://www.cia.gov/cia/publications/factbook/indexgeo.html

# AFGHANISTAN
AF=AFN
# \u00c5LAND ISLANDS
AX=EUR
# ALBANIA
AL=ALL
# ALGERIA
DZ=DZD
# AMERICAN SAMOA
AS=USD
# ANDORRA
AD=EUR
# ANGOLA
AO=AOA
# ANGUILLA
AI=XCD
# ANTARCTICA
AQ=
# ANTIGUA AND BARBUDA
AG=XCD
# ARGENTINA
AR=ARS
# ARMENIA
AM=AMD
# ARUBA
AW=AWG
# AUSTRALIA
AU=AUD
# AUSTRIA
AT=EUR
# AZERBAIJAN
AZ=AZM;2015-12-31-20-00-00;AZN
# BAHAMAS
BS=BSD
# BAHRAIN
BH=BHD
# BANGLADESH
BD=BDT
# BARBADOS
BB=BBD
# BELARUS
BY=BYR
# BELGIUM
BE=EUR
# BELIZE
BZ=BZD
# BENIN
BJ=XOF
# BERMUDA
BM=BMD
# Bonaire, Sint Eustatius and Saba
BQ=USD
# BHUTAN
BT=BTN
# BOLIVIA
BO=BOB
# BOSNIA AND HERZEGOVINA
BA=BAM
# BOTSWANA
BW=BWP
# BOUVET ISLAND
BV=NOK
# BRAZIL
BR=BRL
# BRITISH INDIAN OCEAN TERRITORY
IO=USD
# BRUNEI DARUSSALAM
BN=BND
# BULGARIA
BG=BGN
# BURKINA FASO
BF=XOF
# BURUNDI
BI=BIF
# CAMBODIA
KH=KHR
# CAMEROON
CM=XAF
# CANADA
CA=CAD
# CAPE VERDE
CV=CVE
# CAYMAN ISLANDS
KY=KYD
# CENTRAL AFRICAN REPUBLIC
CF=XAF
# CHAD
TD=XAF
# CHILE
CL=CLP
# CHINA
CN=CNY
# CHRISTMAS ISLAND
CX=AUD
# COCOS (KEELING) ISLANDS
CC=AUD
# COLOMBIA
CO=COP
# COMOROS
KM=KMF
# CONGO
CG=XAF
# CONGO, THE DEMOCRATIC REPUBLIC OF THE
CD=CDF
# COOK ISLANDS
CK=NZD
# COSTA RICA
CR=CRC
# COTE D'IVOIRE
CI=XOF
# CROATIA
HR=HRK
# CUBA
CU=CUP
# Cura\u00e7ao
CW=ANG
# CYPRUS
CY=EUR
# CZECH REPUBLIC
CZ=CZK
# DENMARK
DK=DKK
# DJIBOUTI
DJ=DJF
# DOMINICA
DM=XCD
# DOMINICAN REPUBLIC
DO=DOP
# ECUADOR
EC=USD
# EGYPT
EG=EGP
# EL SALVADOR
# USD is also legal currency as of 2001/01/01
SV=SVC
# EQUATORIAL GUINEA
GQ=XAF
# ERITREA
ER=ERN
# ESTONIA
EE=EUR
# ETHIOPIA
ET=ETB
# FALKLAND ISLANDS (MALVINAS)
FK=FKP
# FAROE ISLANDS
FO=DKK
# FIJI
FJ=FJD
# FINLAND
FI=EUR
# FRANCE
FR=EUR
# FRENCH GUIANA
GF=EUR
# FRENCH POLYNESIA
PF=XPF
# FRENCH SOUTHERN TERRITORIES
TF=EUR
# GABON
GA=XAF
# GAMBIA
GM=GMD
# GEORGIA
GE=GEL
# GERMANY
DE=EUR
# GHANA
GH=GHS
# GIBRALTAR
GI=GIP
# GREECE
GR=EUR
# GREENLAND
GL=DKK
# GRENADA
GD=XCD
# GUADELOUPE
GP=EUR
# GUAM
GU=USD
# GUATEMALA
GT=GTQ
# GUERNSEY
GG=GBP
# GUINEA
GN=GNF
# GUINEA-BISSAU
GW=XOF
# GUYANA
GY=GYD
# HAITI
HT=HTG
# HEARD ISLAND AND MCDONALD ISLANDS
HM=AUD
# HOLY SEE (VATICAN CITY STATE)
VA=EUR
# HONDURAS
HN=HNL
# HONG KONG
HK=HKD
# HUNGARY
HU=HUF
# ICELAND
IS=ISK
# INDIA
IN=INR
# INDONESIA
ID=IDR
# IRAN, ISLAMIC REPUBLIC OF
IR=IRR
# IRAQ
IQ=IQD
# IRELAND
IE=EUR
# ISLE OF MAN
IM=GBP
# ISRAEL
IL=ILS
# ITALY
IT=EUR
# JAMAICA
JM=JMD
# JAPAN
JP=JPY
# JERSEY
JE=GBP
# JORDAN
JO=JOD
# KAZAKSTAN
KZ=KZT
# KENYA
KE=KES
# KIRIBATI
KI=AUD
# KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF
KP=KPW
# KOREA, REPUBLIC OF
KR=KRW
# KUWAIT
KW=KWD
# KYRGYZSTAN
KG=KGS
# LAO PEOPLE'S DEMOCRATIC REPUBLIC
LA=LAK
# LATVIA
LV=LVL
# LEBANON
LB=LBP
# LESOTHO
LS=LSL
# LIBERIA
LR=LRD
# LIBYAN ARAB JAMAHIRIYA
LY=LYD
# LIECHTENSTEIN
LI=CHF
# LITHUANIA
LT=LTL
# LUXEMBOURG
LU=EUR
# MACAU
MO=MOP
# MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF
MK=MKD
# MADAGASCAR
MG=MGA
# MALAWI
MW=MWK
# MALAYSIA
MY=MYR
# MALDIVES
MV=MVR
# MALI
ML=XOF
# MALTA
MT=EUR
# MARSHALL ISLANDS
MH=USD
# MARTINIQUE
MQ=EUR
# MAURITANIA
MR=MRO
# MAURITIUS
MU=MUR
# MAYOTTE
YT=EUR
# MEXICO
MX=MXN
# MICRONESIA, FEDERATED STATES OF
FM=USD
# MOLDOVA, REPUBLIC OF
MD=MDL
# MONACO
MC=EUR
# MONGOLIA
MN=MNT
# MONTENEGRO
ME=EUR
# MONTSERRAT
MS=XCD
# MOROCCO
MA=MAD
# MOZAMBIQUE
MZ=MZM;2016-06-30-22-00-00;MZN
# MYANMAR
MM=MMK
# NAMIBIA
NA=NAD
# NAURU
NR=AUD
# NEPAL
NP=NPR
# NETHERLANDS
NL=EUR
# NETHERLANDS ANTILLES
AN=ANG
# NEW CALEDONIA
NC=XPF
# NEW ZEALAND
NZ=NZD
# NICARAGUA
NI=NIO
# NIGER
NE=XOF
# NIGERIA
NG=NGN
# NIUE
NU=NZD
# NORFOLK ISLAND
NF=AUD
# NORTHERN MARIANA ISLANDS
MP=USD
# NORWAY
NO=NOK
# OMAN
OM=OMR
# PAKISTAN
PK=PKR
# PALAU
PW=USD
# PALESTINIAN TERRITORY, OCCUPIED
PS=ILS
# PANAMA
PA=PAB
# PAPUA NEW GUINEA
PG=PGK
# PARAGUAY
PY=PYG
# PERU
PE=PEN
# PHILIPPINES
PH=PHP
# PITCAIRN
PN=NZD
# POLAND
PL=PLN
# PORTUGAL
PT=EUR
# PUERTO RICO
PR=USD
# QATAR
QA=QAR
# REUNION
RE=EUR
# ROMANIA
RO=ROL;2015-06-30-21-00-00;RON
# RUSSIAN FEDERATION
RU=RUB
# RWANDA
RW=RWF
# SAINT BARTHELEMY
BL=EUR
# SAINT HELENA
SH=SHP
# SAINT KITTS AND NEVIS
KN=XCD
# SAINT LUCIA
LC=XCD
# SAINT MARTIN
MF=EUR
# SAINT PIERRE AND MIQUELON
PM=EUR
# SAINT VINCENT AND THE GRENADINES
VC=XCD
# SAMOA
WS=WST
# SAN MARINO
SM=EUR
# SAO TOME AND PRINCIPE
ST=STD
# SAUDI ARABIA
SA=SAR
# SENEGAL
SN=XOF
# SERBIA
RS=RSD
# SERBIA AND MONTENEGRO
CS=CSD
# SEYCHELLES
SC=SCR
# SIERRA LEONE
SL=SLL
# SINGAPORE
SG=SGD
# SLOVAKIA
SK=EUR
# SLOVENIA
SI=EUR
# SOLOMON ISLANDS
SB=SBD
# SOMALIA
SO=SOS
# SOUTH AFRICA
ZA=ZAR
# SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS
GS=GBP
# SPAIN
ES=EUR
# SRI LANKA
LK=LKR
# SUDAN
SD=SDG
# SURINAME
SR=SRD
# SVALBARD AND JAN MAYEN
SJ=NOK
# Sint Maarten (Dutch part)
SX=ANG
# SWAZILAND
SZ=SZL
# SWEDEN
SE=SEK
# SWITZERLAND
CH=CHF
# SYRIAN ARAB REPUBLIC
SY=SYP
# TAIWAN
TW=TWD
# TAJIKISTAN
TJ=TJS
# TANZANIA, UNITED REPUBLIC OF
TZ=TZS
# THAILAND
TH=THB
# TIMOR-LESTE
TL=USD
# TOGO
TG=XOF
# TOKELAU
TK=NZD
# TONGA
TO=TOP
# TRINIDAD AND TOBAGO
TT=TTD
# TUNISIA
TN=TND
# TURKEY
TR=TRL;2014-12-31-22-00-00;TRY
# TURKMENISTAN
TM=TMT
# TURKS AND CAICOS ISLANDS
TC=USD
# TUVALU
TV=AUD
# UGANDA
UG=UGX
# UKRAINE
UA=UAH
# UNITED ARAB EMIRATES
AE=AED
# UNITED KINGDOM
GB=GBP
# UNITED STATES
US=USD
# UNITED STATES MINOR OUTLYING ISLANDS
UM=USD
# URUGUAY
UY=UYU
# UZBEKISTAN
UZ=UZS
# VANUATU
VU=VUV
# VENEZUELA
VE=VEB;2016-01-01-04-00-00;VEF
# VIET NAM
VN=VND
# VIRGIN ISLANDS, BRITISH
VG=USD
# VIRGIN ISLANDS, U.S.
VI=USD
# WALLIS AND FUTUNA
WF=XPF
# WESTERN SAHARA
EH=MAD
# YEMEN
YE=YER
# ZAMBIA
ZM=ZMK
# ZIMBABWE
ZW=ZWL


# List of currencies with 0, 1, OR 3 decimals for minor units, or where there
# are no minor units defined. All others use 2 decimals.

minor0=\
    ADP-BEF-BIF-BYB-BYR-CLF-CLP-DJF-ESP-GNF-\
    GRD-ISK-ITL-JPY-KMF-KRW-LUF-MGF-PYG-PTE-RWF-\
    TPE-TRL-VUV-XAF-XOF-XPF
minor1=
minor3=\
    BHD-IQD-JOD-KWD-LYD-OMR-TND
minorUndefined=\
    XAG-XAU-XBA-XBB-XBC-XBD-XDR-XFO-XFU-XPD-\
    XPT-XSU-XTS-XUA-XXX

编译通过,继续往下走

结束编译。

/jvm/openjdk/build/linux-amd64/bin# ./java -version  
openjdk version "1.7.0-internal"
OpenJDK Runtime Environment (build 1.7.0-internal-root_2017_04_06_05_42-b00)
OpenJDK 64-Bit Server VM (build 24.0-b56, mixed mode)

上传一个Test.java;

./javac ./Test.java 

/jvm/openjdk/build/linux-amd64/bin# ./java Test 
hi jvm.Thu Apr 06 06:27:40 UTC 2017

总结:编译openjdk1.7,建议ALT_BOOTDIR使用sun jdk1.6较高版本进行编译。

转载于:https://my.oschina.net/u/856051/blog/789335

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深入理解jvm—编译 的相关文章

  • 为什么 MetaSpace 大小是已用 MetaSpace 的两倍?

    我写了一个程序来模拟MetaSpace OOM 但我发现MetaSpace Size几乎总是两倍大Used MetaSpace Why 我用标志运行我的程序 XX MaxMetaspaceSize 50m 程序抛出OOM时Used Meta
  • 在正在运行的 JVM 中查找正在运行的实例

    我想知道是否可以获取给定类的正在运行的实例的句柄 触发此问题的特定问题是应用程序由于存在大量正在运行的线程而无法正常退出 是的 我知道您可以对 thead 进行守护进程 然后它们就不会阻止应用程序退出 但这确实让我想知道这是否可能 我能做的
  • 如何在Java中计算对象的数字年龄[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道Java中对象的年龄 当我们使用new关键字时 Java中用户定义的对象被创建 但是什么时候它会被销毁 是跨越JVM的perm
  • Java 中清除嵌套 Map 的好方法

    public class MyCache AbstractMap
  • 使用 Coldfusion 11 的 CFdirectory,文件名中存在非 ASCII 字符问题

    我有一个类似的问题 ColdFusion CFDirectory 和法语 https stackoverflow com questions 1715632 coldfusion cfdirectory and the french从而没有
  • 将 Kotlin .kt 类打包到 JAR 中

    我如何构建HelloWorld kt as a JAR以便它运行 thufir dur kotlin thufir dur kotlin kotlinc HelloWorld kt include runtime d HelloWorld
  • 如何制作.Net或JVM语言?

    我看到了 NET 和 JVM 的所有这些新语言 一个人如何开始制作一个 我找不到关于 JVM 或 MSIL 规范的任何好的文档 Edit 我已经知道如何解析 我更感兴趣的是如何有这么多人基于这些平台创建新语言 你有点幸运 为 NET 开发的
  • 是否有一种轻量级方法可以在 Java 9+ 中添加安全点

    Java 9 中是否有更便宜的方法调用可以保持其安全点 JVM 在运行时删除安全点以提高效率 但这可能会使分析和监视代码变得更加困难 为此 我们特意添加了一些简单的调用精心挑选确保存在安全点的地方 public static void sa
  • 是否可以强制 JVM 在堆中而不是堆中创建对象?

    我读过一些文章 有时JVM会识别一些对象并尝试在堆栈中而不是堆中创建它 因为堆栈上的内存分配比堆中的内存分配便宜 堆栈上的释放是免费的 并且堆栈由以下方式有效管理 运行时 那么 堆栈中的对象分配是如何工作的 有什么方法可以强制 JVM 执行
  • 使用同一类的不同版本进行类加载:java.lang.LinkageError:尝试重复名称的类定义

    我有一个工作代码 可以动态加载具有不同类名的不同类实现 类文件被加载到内存数据库 Apache 德比数据库 类加载器检索 class文件来自BLOB列 我想做的是插入 class文件为带有版本列的二进制 BLOB 和IS ENABLED标志
  • java内存不足然后退出

    我有一个必须分析大文件的软件 限制输入或提供无限内存都不是一个选择 所以我必须忍受飞行的 OOME 因为 OOME 只杀死线程 所以我的软件运行在一些糟糕的状态 从外面看一切都很好 因为进程正在运行 但在内部却是脑死亡 我想拔掉它的插头 但
  • 了解 Sun JVM [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 jni 从 C 调用 java 函数

    我正在编写一个简单的程序来从我的 C 程序调用 Java 函数 以下是我的代码 include
  • 项目“MyProject”具有比运行 Eclipse 更高的编译器选项

    我正在尝试重建 Hibernate 配置 但我得到了Wrong Compiler Settings错误 请在下面找到我的应用程序配置和错误的屏幕截图 问题是因为 Eclipse 运行在与我的项目中指定的不同的 JVM 上 我的机器上安装了两
  • 如果我使用最新的 JDK 编译 Java 文件,较旧的 JVM 是否能够运行 .class 文件?

    字节码是否取决于创建它所用的 Java 版本 如果我在最新的 JDK 中编译了 java 文件 较旧的 JVM 是否能够运行 class 文件 这取决于三件事 The actual Java versions you are talking
  • Java 表达式树 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有相当于 net的 LINQ 下的表达式树JVM 我想实现一些类似 LINQ 的代码结构Scala
  • 这些用简单的java代码创建的JVM守护线程是什么?

    我有一个非常简单的java应用程序 它只是创建一个对象 调用它的一个函数 所有这些都在一个无限循环中 public class h public static void main String args while true B b new
  • Clojure 为什么命名为 Clojure

    为什么该语言的名称是 Clojure 我用谷歌搜索了一下 在 clojure 中询问 到目前为止 还没有运气 Rich Hickey 他是 Clojure 的设计者 对此的评论是 wiki 上的第一个参考链接 您是否根据以 closure
  • VisualVM v1.4.4 中的 OQL - 获取类的字段名称

    我想执行 OQL 查询 https htmlpreview github io https raw githubusercontent com visualvm visualvm java net backup master www oql
  • Tomcat垃圾收集频率

    我是 Java 新手 刚刚继承了 Tomcat 设置 所以我需要一些指导 上周我读到的有关 JVM 调优和垃圾收集算法的内容超出了我的预期 使用 Visual VM GC 我们的 Tomcat 服务器每天执行的完整 GC 次数少于一次 考虑

随机推荐

  • Windows Server 2012 R2 安装密钥

    Windows Server 2012 R2 安装密钥 xff08 只适用安装 xff0c 不支持激活 xff09 标准版 61 NB4WH BBBYV 3MPPC 9RCMV 46XCB 数据中心版 61 BH9T4 4N7CW 67J3
  • 交叉编译生成ARM汇编和反汇编二进制文件生成ARM汇编(指定ARM架构及cpu类型)...

    code code 1 arm linux gcc xff1a 首先编写C程序 xff0c 假设名字为test c xff0c 保存test c文件内容 xff1a code include lt stdio h gt int main p
  • AI时代的思维方式

    2017年5月23日 xff0c 百度联盟大会在重庆召开 xff0c 李彦宏发表演讲 xff0c 阐释AI 时代的思维方式 xff1a 手机还会长期存在 但移动的机会不多了 From think Mobile to think AI 软硬结
  • 设计模式之(十)桥接模式Bridge

    Bridge模式定义 将抽象和行为划分开来 各自独立 但能动态的结合 任何事物对象都有抽象和行为之分 xff0c 例如人 xff0c 人是一种抽象 xff0c 人分男人和女人等 xff1b 人有行为 xff0c 行为也有各种具体表现 xff
  • mongodb安装与mongo vue的使用

    首先 xff0c 下载mongodb xff0c 然后安装 http downloads mongodb com win32 mongodb win32 x86 64 enterprise windows 64 2 6 4 signed m
  • Windows server 2008 密码丢失恢复

    登陆密码忘记了 xff0c 怎么办啊重装系统又太浪费时间 xff0c 心有不甘啊 xff0c 前几天我就遇到了这种情况 xff0c 刚装好的windows server 2008 就给忘记了 xff0c 又没有做系统密码恢复盘 xff0c
  • 学计算机语言步骤,如何学编程语言?好菜鸟学习编程语言的步骤

    很多人喜欢争论什么什么编程语言好 xff0c 我认为这个话题如果不限定应用范围 xff0c 就毫无意义 本文引用地址 xff1a http www eepw com cn article 201805 379381 htm 每种编程语言必然
  • 作为java初学者,适合看《java编程思想》这本书吗?

    作者 xff1a Martin Wang 链接 xff1a https www zhihu com question 68746244 answer 268380975 结论 xff1a java编 xff08 变 xff09 程 xff0
  • NFS详解

    一 简介 xff1a NFS是Network File System的缩写 xff0c 即网络文件系统 客户端通过挂载的方式将NFS服务器端共享的数据目录挂载到本地目录下 二 工作流程 xff1a 1 由程序在NFS客户端发起存取文件的请求
  • 计算机组成原理第三章题库,计算机组成原理-第3章题库.doc

    计算机组成原理 第3章题库 计算机组成原理第三章题库 1 一 选择题 1 某机字长32位 xff0c 其中1位符号位 xff0c 31位表示尾数 若用定点补码小数表示 xff0c 则最大正小数为 A 43 1 2 32 B 43 1 2 3
  • 为什么很多开发游戏的程序员选择半路转行?

    作为一个在软件行业混迹了十几年的老码农 xff0c 只能讲不仅仅是游戏行业程序员在深坑里 xff0c 国内很多程序员都在坑里呆着那 xff0c 特别是战斗在互联网公司的程序员兄弟们 xff0c 几乎天天都是加班加点的日子 xff0c 整体来
  • SMP、NUMA、MPP体系结构介绍

    SMP NUMA MPP体系结构介绍 认识Numa架构 从系统架构来看 xff0c 目前的商用服务器大体可以分为三类 xff0c 即对称多处理器结构 SMP xff1a Symmetric Multi Processor xff0c 非一致
  • 【解决】")syntax error: invalid arithmetic operator (error token is "

    http blog sciencenet cn blog 588243 502678 html COLLCC 61 132586598 amp Your error message seems to indicate pollution o
  • 仅仅有走过的路 才懂她的内容

    年少初遇常在我心 傻傻的站在十一教门前一排高高的杨树下伫立 xff0c 独念风凉 叶落肩头 我该用什么去聆听这走过的两个月 明年的枝头 xff0c 依然会看到今日的灿烂 想想磕磕绊绊的两个月 xff0c 学习的故事轮番上演 一个比一个精彩
  • 推荐几本GIS专业书籍

    对于开设GIS专业的高校 xff0c 基本上都会有自己的专业教材 xff0c 用的比较多的像邬伦的 地理信息系统 xff1a 原理 方法和应用 和中科院陈述彭院士的 地理信息系统导论 在当初考研的时候 xff0c 自己也买了不少教材 xff
  • linux查看气质系统文件命令,如何美化Linux命令提示符

    原本的 root 64 localhost 看久了难免让人厌倦 如果按自己的习惯修改 xff0c 既能看着舒服 xff0c 又能提高气质 下面就让学习啦小编教大家如何美化Linux命令提示符吧 美化Linux命令提示符的方法 美化Bash
  • mysql改mariadb_MySQL/MariaDBSQL修改表字段类型、备份数据库操作实例

    1 修改表字段类型alter table nodes modify column info varchar 200 示例操作入下 xff1a MariaDB dbmanager gt alter table nodes modify col
  • error.html前面不要带主域名,设置网站404页面的正确做法

    核心提示 xff1a HTTP 404 错误意味着链接指向的网页不存在 xff0c 即原始网页的URL失效 xff0c 这种情况经常会发生 什么是404错误 HTTP 404 错误意味着链接指向的网页不存在 xff0c 即原始网页的URL失
  • HDU 1275

    两车追及或相遇问题 Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total Submission s 598 Accepted Sub
  • 深入理解jvm—编译

    为什么80 的码农都做不了架构师 xff1f gt gt gt java开发一阵子了 xff0c 想深入了解下jvm xff0c 所以在ubuntu下本地编译学习一下openjdk代码 1 xff0c java虚拟机有很多不稳定参数 xff